diff options
| author | Philip Kaludercic | 2024-11-08 11:36:49 -0500 |
|---|---|---|
| committer | Philip Kaludercic | 2024-11-08 11:36:49 -0500 |
| commit | 8fa657f064cf605b19e6d11e083df152ca3e21d3 (patch) | |
| tree | 6e7d41223c5d3262d905ae2fdd3057dd17fa5ef9 | |
| parent | e9f8dbf19439425568198deb44e48bff150212a4 (diff) | |
| parent | 551d1a2cd73bb3df2cad0f1f5b5d1628bb138483 (diff) | |
| download | emacs-8fa657f064cf605b19e6d11e083df152ca3e21d3.tar.gz emacs-8fa657f064cf605b19e6d11e083df152ca3e21d3.zip | |
Merge branch 'master' into feature/package-autosuggest
| -rw-r--r-- | etc/NEWS | 18 | ||||
| -rw-r--r-- | etc/symbol-releases.eld | 4 | ||||
| -rw-r--r-- | lisp/eshell/em-dirs.el | 7 | ||||
| -rw-r--r-- | lisp/leim/quail/iroquoian.el | 1051 | ||||
| -rw-r--r-- | lisp/net/eww.el | 7 | ||||
| -rw-r--r-- | lisp/net/newst-plainview.el | 5 | ||||
| -rw-r--r-- | lisp/progmodes/python.el | 19 | ||||
| -rw-r--r-- | lisp/subr.el | 4 | ||||
| -rw-r--r-- | lisp/term/w32-win.el | 8 | ||||
| -rw-r--r-- | lisp/vc/vc.el | 7 | ||||
| -rw-r--r-- | src/itree.c | 52 | ||||
| -rw-r--r-- | src/itree.h | 18 | ||||
| -rw-r--r-- | src/nsterm.m | 3 | ||||
| -rw-r--r-- | test/lisp/subr-tests.el | 6 |
14 files changed, 1151 insertions, 58 deletions
| @@ -178,6 +178,17 @@ characters. | |||
| 178 | The Tifinagh script is used to write the Berber languages. | 178 | The Tifinagh script is used to write the Berber languages. |
| 179 | 179 | ||
| 180 | --- | 180 | --- |
| 181 | *** New input methods for Northern Iroquoian languages. | ||
| 182 | Input methods are now implemented for Haudenosaunee languages in the | ||
| 183 | Northern Iroquoian language family: 'mohawk-postfix' (Mohawk | ||
| 184 | [Kanien’kéha / Onkwehonwehnéha]), 'oneida-postfix' (Oneida [Onʌyota:ká: | ||
| 185 | / Ukwehuwehnéha]), 'cayuga-postfix' (Cayuga [Gayogo̱ho:nǫhnéha:ˀ]), | ||
| 186 | 'onondaga-postfix (Onondaga [[Onųdaʔgegáʔ]), and `seneca-postfix' | ||
| 187 | [Onödowá’ga:’]). Additionally, there is a general-purpose | ||
| 188 | 'haudenosaunee-postfix' input method to facilitate writing in the | ||
| 189 | orthographies of the five languages simultaneously. | ||
| 190 | |||
| 191 | --- | ||
| 181 | ** 'visual-wrap-prefix-mode' now supports variable-pitch fonts. | 192 | ** 'visual-wrap-prefix-mode' now supports variable-pitch fonts. |
| 182 | When using 'visual-wrap-prefix-mode' in buffers with variable-pitch | 193 | When using 'visual-wrap-prefix-mode' in buffers with variable-pitch |
| 183 | fonts, the wrapped text will now be lined up correctly so that it's | 194 | fonts, the wrapped text will now be lined up correctly so that it's |
| @@ -706,6 +717,13 @@ Use 'if-let*', 'when-let*' and 'and-let*' instead. | |||
| 706 | This effectively obsoletes the old '(if-let (SYMBOL SOMETHING) ...)' | 717 | This effectively obsoletes the old '(if-let (SYMBOL SOMETHING) ...)' |
| 707 | single binding syntax, which we'd kept only for backwards compatibility. | 718 | single binding syntax, which we'd kept only for backwards compatibility. |
| 708 | 719 | ||
| 720 | --- | ||
| 721 | ** The Eshell 'pwd' command now expands the directory name on all systems. | ||
| 722 | This ensures that user directories are properly expanded to their full | ||
| 723 | name. Previously, Eshell only did this for MS-Windows systems. To | ||
| 724 | restore the old behavior, you can set 'eshell-pwd-convert-function' to | ||
| 725 | 'identity'. | ||
| 726 | |||
| 709 | 727 | ||
| 710 | * Lisp Changes in Emacs 31.1 | 728 | * Lisp Changes in Emacs 31.1 |
| 711 | 729 | ||
diff --git a/etc/symbol-releases.eld b/etc/symbol-releases.eld index 4931be2fb7d..bdf5858102e 100644 --- a/etc/symbol-releases.eld +++ b/etc/symbol-releases.eld | |||
| @@ -19,6 +19,10 @@ | |||
| 19 | ;; https://github.com/larsbrinkhoff/emacs-history/tree/sources/decuslib.com/decus/vax85b/gnuemax | 19 | ;; https://github.com/larsbrinkhoff/emacs-history/tree/sources/decuslib.com/decus/vax85b/gnuemax |
| 20 | 20 | ||
| 21 | ("24.4" fun set-transient-map) | 21 | ("24.4" fun set-transient-map) |
| 22 | ("22.1" fun version=) | ||
| 23 | ("22.1" fun version<) | ||
| 24 | ("22.1" fun version<=) | ||
| 25 | ("22.1" fun read-number) | ||
| 22 | ("19.7" fun defsubst) | 26 | ("19.7" fun defsubst) |
| 23 | ("19.34" fun make-directory) | 27 | ("19.34" fun make-directory) |
| 24 | ("18.59" fun mark) | 28 | ("18.59" fun mark) |
diff --git a/lisp/eshell/em-dirs.el b/lisp/eshell/em-dirs.el index ad0a5beac1e..e005bc98873 100644 --- a/lisp/eshell/em-dirs.el +++ b/lisp/eshell/em-dirs.el | |||
| @@ -65,9 +65,7 @@ they lack somewhat in feel from the typical shell equivalents." | |||
| 65 | :version "24.1" ; removed eshell-dirs-initialize | 65 | :version "24.1" ; removed eshell-dirs-initialize |
| 66 | :type 'hook) | 66 | :type 'hook) |
| 67 | 67 | ||
| 68 | (defcustom eshell-pwd-convert-function (if (eshell-under-windows-p) | 68 | (defcustom eshell-pwd-convert-function #'expand-file-name |
| 69 | #'expand-file-name | ||
| 70 | #'identity) | ||
| 71 | "The function used to normalize the value of Eshell's `pwd'. | 69 | "The function used to normalize the value of Eshell's `pwd'. |
| 72 | The value returned by `pwd' is also used when recording the | 70 | The value returned by `pwd' is also used when recording the |
| 73 | last-visited directory in the last-dir-ring, so it will affect the | 71 | last-visited directory in the last-dir-ring, so it will affect the |
| @@ -75,7 +73,8 @@ form of the list used by `cd ='." | |||
| 75 | :type '(radio (function-item file-truename) | 73 | :type '(radio (function-item file-truename) |
| 76 | (function-item expand-file-name) | 74 | (function-item expand-file-name) |
| 77 | (function-item identity) | 75 | (function-item identity) |
| 78 | (function :tag "Other"))) | 76 | (function :tag "Other")) |
| 77 | :version "31.1") | ||
| 79 | 78 | ||
| 80 | (defcustom eshell-ask-to-save-last-dir 'always | 79 | (defcustom eshell-ask-to-save-last-dir 'always |
| 81 | "Determine if the last-dir-ring should be automatically saved. | 80 | "Determine if the last-dir-ring should be automatically saved. |
diff --git a/lisp/leim/quail/iroquoian.el b/lisp/leim/quail/iroquoian.el new file mode 100644 index 00000000000..3b4fdad62c2 --- /dev/null +++ b/lisp/leim/quail/iroquoian.el | |||
| @@ -0,0 +1,1051 @@ | |||
| 1 | ;;; iroquoian.el --- Quail packages for inputting Iroquoian languages -*- lexical-binding: t; coding: utf-8; -*- | ||
| 2 | |||
| 3 | ;; Copyright (C) 2024 Free Software Foundation, Inc. | ||
| 4 | |||
| 5 | ;; Author: Kierin Bell <fernseed@fernseed.me> | ||
| 6 | ;; Keywords: i18n | ||
| 7 | |||
| 8 | ;; This file is part of GNU Emacs. | ||
| 9 | |||
| 10 | ;; This program is free software; you can redistribute it and/or modify | ||
| 11 | ;; it under the terms of the GNU General Public License as published by | ||
| 12 | ;; the Free Software Foundation, either version 3 of the License, or | ||
| 13 | ;; (at your option) any later version. | ||
| 14 | |||
| 15 | ;; This program is distributed in the hope that it will be useful, | ||
| 16 | ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 17 | ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 18 | ;; GNU General Public License for more details. | ||
| 19 | |||
| 20 | ;; You should have received a copy of the GNU General Public License | ||
| 21 | ;; along with this program. If not, see <https://www.gnu.org/licenses/>. | ||
| 22 | |||
| 23 | ;;; Commentary: | ||
| 24 | |||
| 25 | ;; This file implements input methods for Northern Iroquoian languages. | ||
| 26 | |||
| 27 | ;; Input methods are implemented for all Five Nations Iroquois | ||
| 28 | ;; languages: | ||
| 29 | |||
| 30 | ;; - Mohawk (Kanien’kéha / Onkwehonwehnéha) | ||
| 31 | ;; - Oneida (Onʌyota:ká: / Ukwehuwehnéha) | ||
| 32 | ;; - Onondaga (Onųdaʔgegáʔ) | ||
| 33 | ;; - Cayuga (Gayogo̱ho:nǫhnéha:ˀ) | ||
| 34 | ;; - Seneca (Onödowá’ga:’) | ||
| 35 | |||
| 36 | ;; A composite input method for all of the languages above is also | ||
| 37 | ;; defined: `haudenosaunee-postfix'. | ||
| 38 | |||
| 39 | ;; Input methods are not yet implemented for the remaining Northern | ||
| 40 | ;; Iroquoian languages, including: | ||
| 41 | |||
| 42 | ;; - Tuscarora (Skarù:ręʔ) | ||
| 43 | ;; - Wendat (Huron) / Wyandot | ||
| 44 | |||
| 45 | ;;; Code: | ||
| 46 | |||
| 47 | (require 'quail) | ||
| 48 | (require 'seq) | ||
| 49 | (require 'pcase) | ||
| 50 | |||
| 51 | |||
| 52 | ;;; Mohawk | ||
| 53 | |||
| 54 | ;; | ||
| 55 | ;; There are several orthographies used today to write Mohawk in | ||
| 56 | ;; different communities, but differences are small and mainly involve | ||
| 57 | ;; differences in representation of the palatal glide [j] (written <i> | ||
| 58 | ;; in Eastern/Central dialects and <y> in Western dialects). The | ||
| 59 | ;; following input method should work for all of variants. | ||
| 60 | ;; | ||
| 61 | ;; Reference work for orthographies used by speakers of Eastern | ||
| 62 | ;; (Kahnawà:ke, Kanehsatà:ke, Wáhta) and Central (Ahkwesahsne) dialects | ||
| 63 | ;; of Mohawk: | ||
| 64 | ;; | ||
| 65 | ;; Lazore, Dorothy Karihwénhawe. 1993. The Mohawk language | ||
| 66 | ;; Standardisation Project, Conference Report. Ontario: Literacy | ||
| 67 | ;; Ontario. | ||
| 68 | ;; | ||
| 69 | ;; Reference work for the orthography commonly used by speakers of | ||
| 70 | ;; Western dialects of Mohawk (Tyendinaga, Ohswé:ken): | ||
| 71 | ;; | ||
| 72 | ;; Brian Maracle. 2021. 1st Year Adult Immersion Program 2020-21. | ||
| 73 | ;; Ohsweken, ON, Canada: Onkwawenna Kentyohkwa. Unpublished curriculum | ||
| 74 | ;; document written by staff for the Okwawenna Kentyohkwa adult | ||
| 75 | ;; immersion program. | ||
| 76 | ;; | ||
| 77 | |||
| 78 | (defconst iroquoian-mohawk-modifier-alist nil | ||
| 79 | "Alist of rules for modifier letters in Mohawk input methods. | ||
| 80 | Entries are as with rules in `quail-define-rules'.") | ||
| 81 | |||
| 82 | (defconst iroquoian-mohawk-vowel-alist | ||
| 83 | '(("a'" ?á) | ||
| 84 | ("a`" ?à) | ||
| 85 | ("A'" ?Á) | ||
| 86 | ("A`" ?À) | ||
| 87 | ("e'" ?é) | ||
| 88 | ("e`" ?è) | ||
| 89 | ("E'" ?É) | ||
| 90 | ("E`" ?È) | ||
| 91 | ("i'" ?í) | ||
| 92 | ("i`" ?ì) | ||
| 93 | ("I'" ?Í) | ||
| 94 | ("I`" ?Ì) | ||
| 95 | ("o'" ?ó) | ||
| 96 | ("o`" ?ò) | ||
| 97 | ("O'" ?Ó) | ||
| 98 | ("O`" ?Ò) | ||
| 99 | |||
| 100 | ("a''" ["a'"]) | ||
| 101 | ("a``" ["a`"]) | ||
| 102 | ("A''" ["A'"]) | ||
| 103 | ("A``" ["A`"]) | ||
| 104 | ("e''" ["e'"]) | ||
| 105 | ("e``" ["e`"]) | ||
| 106 | ("E''" ["E'"]) | ||
| 107 | ("E``" ["E`"]) | ||
| 108 | ("i''" ["i'"]) | ||
| 109 | ("i``" ["i`"]) | ||
| 110 | ("I''" ["I'"]) | ||
| 111 | ("I``" ["I`"]) | ||
| 112 | ("o''" ["o'"]) | ||
| 113 | ("o``" ["o`"]) | ||
| 114 | ("O''" ["O'"]) | ||
| 115 | ("O``" ["O`"])) | ||
| 116 | "Alist of rules for vowel letters in Mohawk input methods. | ||
| 117 | Entries are as with rules in `quail-define-rules'.") | ||
| 118 | |||
| 119 | (defconst iroquoian-mohawk-consonant-alist | ||
| 120 | '((";;" ?\N{RIGHT SINGLE QUOTATION MARK})) | ||
| 121 | "Alist of rules for consonant letters in Mohawk input methods. | ||
| 122 | Entries are as with rules in `quail-define-rules'.") | ||
| 123 | |||
| 124 | (quail-define-package | ||
| 125 | "mohawk-postfix" "Mohawk" "MOH<" t | ||
| 126 | "Mohawk (Kanien’kéha) input method with postfix modifiers | ||
| 127 | |||
| 128 | Stress diacritics: | ||
| 129 | |||
| 130 | | Key | Description | Example | | ||
| 131 | |------+--------------+---------| | ||
| 132 | | \\=' | Acute accent | a' -> á | | ||
| 133 | | \\=` | Grave accent | a` -> à | | ||
| 134 | |||
| 135 | Doubling any of these postfixes separates the letter and the postfix. | ||
| 136 | |||
| 137 | Vowels: | ||
| 138 | |||
| 139 | a, e, i, and o are bound to a single key. | ||
| 140 | |||
| 141 | Consonants: | ||
| 142 | |||
| 143 | | Key | Translation | Description | | ||
| 144 | |-----+-------------+--------------| | ||
| 145 | | ;; | \\=’ | Glottal stop | | ||
| 146 | |||
| 147 | h, k, n, r, s, t, w, and y are bound to a single key. | ||
| 148 | |||
| 149 | b, m, and p are used rarely in ideophones and loan words. They are also | ||
| 150 | each bound to a single key. | ||
| 151 | |||
| 152 | All Haudenosaunee languages, including Mohawk, can be input | ||
| 153 | simultaneously using the input method `haudenosaunee-postfix'." | ||
| 154 | nil t nil nil nil nil nil nil nil nil t) | ||
| 155 | |||
| 156 | (pcase-dolist (`(,key ,trans) | ||
| 157 | (append iroquoian-mohawk-modifier-alist | ||
| 158 | iroquoian-mohawk-consonant-alist | ||
| 159 | iroquoian-mohawk-vowel-alist)) | ||
| 160 | (quail-defrule key trans)) | ||
| 161 | |||
| 162 | |||
| 163 | ;;; Oneida | ||
| 164 | |||
| 165 | ;; | ||
| 166 | ;; There are slight variations in the orthographies used today to write | ||
| 167 | ;; Oneida. The differences mainly involve in representation of vowel | ||
| 168 | ;; length and glottal stops. | ||
| 169 | ;; | ||
| 170 | ;; Reference work for Oneida orthography: | ||
| 171 | ;; | ||
| 172 | ;; Michelson, K., Doxtator, M. and Doxtator, M.A.. 2002. | ||
| 173 | ;; Oneida-English/English-Oneida dictionary. Toronto: University of | ||
| 174 | ;; Toronto Press. | ||
| 175 | ;; | ||
| 176 | ;; Orthographic variation from personal familiarity with community | ||
| 177 | ;; language programs and curricula. | ||
| 178 | ;; | ||
| 179 | |||
| 180 | (defconst iroquoian-oneida-modifier-alist | ||
| 181 | '(("::" ?\N{MIDDLE DOT})) | ||
| 182 | "Alist of rules for modifier letters in Oneida input methods. | ||
| 183 | Entries are as with rules in `quail-define-rules'.") | ||
| 184 | |||
| 185 | (defconst iroquoian-oneida-vowel-alist | ||
| 186 | '(("a'" ?á) | ||
| 187 | ("A'" ?Á) | ||
| 188 | ("e'" ?é) | ||
| 189 | ("E'" ?É) | ||
| 190 | ("i'" ?í) | ||
| 191 | ("I'" ?Í) | ||
| 192 | ("o'" ?ó) | ||
| 193 | ("O'" ?Ó) | ||
| 194 | ("u'" ?ú) | ||
| 195 | ("U'" ?Ú) | ||
| 196 | ("e/" ?ʌ) | ||
| 197 | ("e/'" ["ʌ́"]) | ||
| 198 | ("E/" ?Ʌ) | ||
| 199 | ("E/'" ["Ʌ́"]) | ||
| 200 | |||
| 201 | ("a''" ["a'"]) | ||
| 202 | ("A''" ["A'"]) | ||
| 203 | ("e''" ["e'"]) | ||
| 204 | ("E''" ["E'"]) | ||
| 205 | ("i''" ["i'"]) | ||
| 206 | ("I''" ["I'"]) | ||
| 207 | ("o''" ["o'"]) | ||
| 208 | ("O''" ["O'"]) | ||
| 209 | ("u''" ["u'"]) | ||
| 210 | ("U''" ["U'"]) | ||
| 211 | ("e//" ["e/"]) | ||
| 212 | ("e/''" ["ʌ'"]) | ||
| 213 | ("E//" ["E/"]) | ||
| 214 | ("E/''" ["Ʌ'"])) | ||
| 215 | "Alist of rules for vowel letters in Oneida input methods. | ||
| 216 | Entries are as with rules in `quail-define-rules'.") | ||
| 217 | |||
| 218 | (defconst iroquoian-oneida-consonant-alist | ||
| 219 | '((";;" ?\N{MODIFIER LETTER GLOTTAL STOP}) | ||
| 220 | (";'" ?\N{RIGHT SINGLE QUOTATION MARK})) | ||
| 221 | "Alist of rules for consonant letters in Oneida input methods. | ||
| 222 | Entries are as with rules in `quail-define-rules'.") | ||
| 223 | |||
| 224 | (defconst iroquoian-oneida-devoicing-alist | ||
| 225 | '(("_" ?\N{COMBINING LOW LINE}) | ||
| 226 | ("__" ?_)) | ||
| 227 | "Alist of rules for devoicing characters in Oneida input methods. | ||
| 228 | Entries are as with rules in `quail-define-rules'.") | ||
| 229 | |||
| 230 | (quail-define-package | ||
| 231 | "oneida-postfix" "Oneida" "ONE<" t | ||
| 232 | "Oneida (Onʌyota:ká:) input method with postfix modifiers | ||
| 233 | |||
| 234 | Modifiers: | ||
| 235 | |||
| 236 | | Key | Translation | Description | | ||
| 237 | |-----+-------------+--------------------------| | ||
| 238 | | :: | · | Vowel length | | ||
| 239 | |||
| 240 | Stress diacritics: | ||
| 241 | |||
| 242 | | Key | Description | Example | | ||
| 243 | |------+--------------+---------| | ||
| 244 | | \\=' | Acute accent | a' -> á | | ||
| 245 | |||
| 246 | Doubling the postfix separates the letter and the postfix. | ||
| 247 | |||
| 248 | Vowels: | ||
| 249 | |||
| 250 | | Key | Translation | Description | | ||
| 251 | |-----+-------------+-----------------------------------| | ||
| 252 | | e/ | ʌ | Mid central nasal vowel | | ||
| 253 | | E/ | Ʌ | Mid central nasal vowel (capital) | | ||
| 254 | |||
| 255 | a, e, i, o, and u are bound to a single key. | ||
| 256 | |||
| 257 | Consonants: | ||
| 258 | |||
| 259 | | Key | Translation | Description | | ||
| 260 | |-----+-------------+--------------------------| | ||
| 261 | | ;; | ˀ | Glottal stop | | ||
| 262 | | ;\\=' | \\=’ | Glottal stop (alternate) | | ||
| 263 | |||
| 264 | h, k, l, n, s, t, w, and y are bound to a single key. | ||
| 265 | |||
| 266 | Devoicing: | ||
| 267 | |||
| 268 | | Key | Description | Example | | ||
| 269 | |-----+--------------------+----------| | ||
| 270 | | _ | Combining low line | a_ -> a̲ | | ||
| 271 | |||
| 272 | Note: Not all fonts can properly display a combining low line on all | ||
| 273 | letters. | ||
| 274 | |||
| 275 | Underlining is commonly used in Oneida to indicate devoiced syllables on | ||
| 276 | pre-pausal forms (also called utterance-final forms). Alternatively, | ||
| 277 | markup or other methods can be used to create an underlining effect. | ||
| 278 | |||
| 279 | To enter a plain underscore, type the underscore twice. | ||
| 280 | |||
| 281 | All Haudenosaunee languages, including Oneida, can be input | ||
| 282 | simultaneously using the input method `haudenosaunee-postfix'." | ||
| 283 | nil t nil nil nil nil nil nil nil nil t) | ||
| 284 | |||
| 285 | (pcase-dolist (`(,key ,trans) | ||
| 286 | (append iroquoian-oneida-modifier-alist | ||
| 287 | iroquoian-oneida-consonant-alist | ||
| 288 | iroquoian-oneida-vowel-alist | ||
| 289 | iroquoian-oneida-devoicing-alist)) | ||
| 290 | (quail-defrule key trans)) | ||
| 291 | |||
| 292 | |||
| 293 | ;;; Onondaga | ||
| 294 | |||
| 295 | ;; | ||
| 296 | ;; There are three main orthographies for Onondaga in contemporary use: | ||
| 297 | ;; the community orthography used at Six Nations of the Grand River, the | ||
| 298 | ;; community orthography used at Onondaga Nation in New York, and the | ||
| 299 | ;; orthography used by Hanni Woodbury in her 2003 dictionary (see | ||
| 300 | ;; below). The latter is included because of its adoption in academia | ||
| 301 | ;; and also by some contemporary second-language learners. | ||
| 302 | ;; Additionally, Woodbury's dictionary provides a helpful description of | ||
| 303 | ;; the community orthographies that is still applicable today. | ||
| 304 | ;; | ||
| 305 | ;; The differences between the orthographies are small, involving | ||
| 306 | ;; representation of nasal vowels (ęand ǫat Six Nations of the Grand | ||
| 307 | ;; River, eñ and oñ at Onondaga in New York, and ęand ųfollowing | ||
| 308 | ;; Woodbury's dictionary), the low front rounded vowel (äat Six Nations | ||
| 309 | ;; and Onondaga Nation and æ following Woodbury), vowel length (: | ||
| 310 | ;; [colon] after a vowel in community orthographies and · [middle dot] | ||
| 311 | ;; following Woodbury), and glottal stops (’ [right single quotation | ||
| 312 | ;; mark] in community orthographies and ʔ [latin letter glottal stop] | ||
| 313 | ;; following Woodbury). The input method here aims to accommodate all | ||
| 314 | ;; three of these orthographies. | ||
| 315 | ;; | ||
| 316 | ;; Reference work for Onondaga orthography: | ||
| 317 | ;; | ||
| 318 | ;; Hanni Woodbury. 2003. Onondaga-English/English-Onondaga | ||
| 319 | ;; Dictionary. Toronto: University of Toronto Press. | ||
| 320 | ;; | ||
| 321 | |||
| 322 | (defconst iroquoian-onondaga-modifier-alist | ||
| 323 | '(("::" ?\N{MIDDLE DOT})) | ||
| 324 | "Alist of rules for modifier letters in Onondaga input methods. | ||
| 325 | Entries are as with rules in `quail-define-rules'.") | ||
| 326 | |||
| 327 | (defconst iroquoian-onondaga-vowel-alist | ||
| 328 | '(("a'" ?á) | ||
| 329 | ("A'" ?Á) | ||
| 330 | ("e'" ?é) | ||
| 331 | ("E'" ?É) | ||
| 332 | ("i'" ?í) | ||
| 333 | ("I'" ?Í) | ||
| 334 | ("o'" ?ó) | ||
| 335 | ("O'" ?Ó) | ||
| 336 | ("e," ?ę) | ||
| 337 | ("e,'" ["ę́"]) | ||
| 338 | ("E," ?Ę) | ||
| 339 | ("E,'" ["Ę́"]) | ||
| 340 | ("o," ?ǫ) | ||
| 341 | ("o,'" ["ǫ́"]) | ||
| 342 | ("O," ?Ǫ) | ||
| 343 | ("O,'" ["Ǫ́"]) | ||
| 344 | ("a\"" ?ä) | ||
| 345 | ("a\"'" ["ä́"]) | ||
| 346 | ("A\"" ?Ä) | ||
| 347 | ("A\"'" ["Ä́"]) | ||
| 348 | ;; From Woodbury (2003) orthography: | ||
| 349 | ("a/" ?æ) | ||
| 350 | ("a/'" ["ǽ"]) | ||
| 351 | ("A/" ?Æ) | ||
| 352 | ("A/'" ["Ǽ"]) | ||
| 353 | ("u," ?ų) | ||
| 354 | ("u,'" ["ų́"]) | ||
| 355 | ("U," ?Ų) | ||
| 356 | ("U,'" ["Ų́"]) | ||
| 357 | |||
| 358 | ("a''" ["a'"]) | ||
| 359 | ("A''" ["A'"]) | ||
| 360 | ("e''" ["e'"]) | ||
| 361 | ("E''" ["E'"]) | ||
| 362 | ("i''" ["i'"]) | ||
| 363 | ("I''" ["I'"]) | ||
| 364 | ("o''" ["o'"]) | ||
| 365 | ("O''" ["O'"]) | ||
| 366 | ("e,," ["e,"]) | ||
| 367 | ("e,''" ["ę'"]) | ||
| 368 | ("E,," ["E,"]) | ||
| 369 | ("E,''" ["Ę'"]) | ||
| 370 | ("o,," ["o,"]) | ||
| 371 | ("o,''" ["ǫ'"]) | ||
| 372 | ("O,," ["O,"]) | ||
| 373 | ("O,''" ["Ǫ'"]) | ||
| 374 | ("a\"\"" ["a\""]) | ||
| 375 | ("a\"''" ["ä'"]) | ||
| 376 | ("A\"\"" ["A\""]) | ||
| 377 | ("A\"''" ["Ä'"]) | ||
| 378 | ("a//" ["a/"]) | ||
| 379 | ("a/''" ["æ'"]) | ||
| 380 | ("A//" ["A/"]) | ||
| 381 | ("A/''" ["Æ'"]) | ||
| 382 | ("u,," ["u,"]) | ||
| 383 | ("u,''" ["ų'"]) | ||
| 384 | ("U,," ["U,"]) | ||
| 385 | ("U,''" ["Ų'"])) | ||
| 386 | "Alist of rules for vowel letters in Onondaga input methods. | ||
| 387 | Entries are as with rules in `quail-define-rules'.") | ||
| 388 | |||
| 389 | (defconst iroquoian-onondaga-consonant-alist | ||
| 390 | '((";;" ?\N{RIGHT SINGLE QUOTATION MARK}) | ||
| 391 | (";:" ?\N{LATIN LETTER GLOTTAL STOP})) | ||
| 392 | "Alist of rules for consonant letters in Onondaga input methods. | ||
| 393 | Entries are as with rules in `quail-define-rules'.") | ||
| 394 | |||
| 395 | (defconst iroquoian-onondaga-nasal-alist | ||
| 396 | '(("n-" ?ñ) | ||
| 397 | ("n--" ["n-"]) | ||
| 398 | ("N-" ?Ñ) | ||
| 399 | ("N--" ["N-"])) | ||
| 400 | "Alist of rules for nasal modifier letters in Onondaga input methods. | ||
| 401 | Entries are as with rules in `quail-define-rules'.") | ||
| 402 | |||
| 403 | (quail-define-package | ||
| 404 | "onondaga-postfix" "Onondaga" "ONO<" t | ||
| 405 | "Onondaga (Onųdaʔgegáʔ) input method with postfix modifiers | ||
| 406 | |||
| 407 | Modifiers: | ||
| 408 | |||
| 409 | | Key | Translation | Description | | ||
| 410 | |-----+-------------+--------------------------| | ||
| 411 | | :: | · | Vowel length (alternate) | | ||
| 412 | |||
| 413 | Stress diacritics: | ||
| 414 | |||
| 415 | | Key | Description | Example | | ||
| 416 | |------+--------------+---------| | ||
| 417 | | \\=' | Acute accent | a' -> á | | ||
| 418 | |||
| 419 | Doubling the postfix separates the letter and the postfix. | ||
| 420 | |||
| 421 | Vowels: | ||
| 422 | |||
| 423 | | Key | Translation | Description | | ||
| 424 | |-----+-------------+---------------------------------------| | ||
| 425 | | Six Nations of the Grand River orthography | | ||
| 426 | |-----------------------------------------------------------| | ||
| 427 | | e, | ę | Mid front nasal vowel | | ||
| 428 | | E, | Ę | Mid front nasal vowel (capital) | | ||
| 429 | | o, | ǫ | Back high nasal vowel | | ||
| 430 | | O, | Ǫ | Back high nasal vowel (capital) | | ||
| 431 | | a\" | ä | Low front rounded vowel | | ||
| 432 | | A\" | Ä | Low front rounded vowel (capital) | | ||
| 433 | |-----------------------------------------------------------| | ||
| 434 | | Onondaga Nation, New York orthography | | ||
| 435 | |-----------------------------------------------------------| | ||
| 436 | | en- | eñ | Mid front nasal vowel | | ||
| 437 | | EN- | EÑ | Mid front nasal vowel (capital) | | ||
| 438 | | on- | oñ | Back high nasal vowel | | ||
| 439 | | ON- | OÑ | Back high nasal vowel (capital) | | ||
| 440 | | a\" | ä | Low front rounded vowel | | ||
| 441 | | A\" | Ä | Low front rounded vowel (capital) | | ||
| 442 | |-----------------------------------------------------------| | ||
| 443 | | Dictionary orthography (Hanni Woodbury, 2003) | | ||
| 444 | |-----------------------------------------------------------| | ||
| 445 | | e, | ę | Mid front nasal vowel | | ||
| 446 | | E, | Ę | Mid front nasal vowel (capital) | | ||
| 447 | | u, | ų | Back high nasal vowel | | ||
| 448 | | U, | Ų | Back high nasal vowel (capital) | | ||
| 449 | | a/ | æ | Low front rounded vowel | | ||
| 450 | | A/ | Æ | Low front rounded vowel (capital) | | ||
| 451 | |||
| 452 | a, e, i, and o are bound to a single key. | ||
| 453 | |||
| 454 | Consonants: | ||
| 455 | |||
| 456 | | Key | Translation | Description | | ||
| 457 | |-----+-------------+--------------------------| | ||
| 458 | | ;; | \\=’ | Glottal stop | | ||
| 459 | | ;: | ʔ | Glottal stop (alternate) | | ||
| 460 | |||
| 461 | c, d, g, h, j, k, n, s, t, w, and y are bound to a single key. | ||
| 462 | |||
| 463 | All Haudenosaunee languages, including Onondaga, can be input | ||
| 464 | simultaneously using the input method `haudenosaunee-postfix'." | ||
| 465 | nil t nil nil nil nil nil nil nil nil t) | ||
| 466 | |||
| 467 | (pcase-dolist (`(,key ,trans) | ||
| 468 | (append iroquoian-onondaga-modifier-alist | ||
| 469 | iroquoian-onondaga-consonant-alist | ||
| 470 | iroquoian-onondaga-nasal-alist | ||
| 471 | iroquoian-onondaga-vowel-alist)) | ||
| 472 | (quail-defrule key trans)) | ||
| 473 | |||
| 474 | |||
| 475 | ;;; Cayuga | ||
| 476 | |||
| 477 | ;; | ||
| 478 | ;; The primary community orthography used for the Cayuga language is | ||
| 479 | ;; called the Henry orthography, after important language revitalist | ||
| 480 | ;; Reginald Henry. There are slight variations, particularly in which | ||
| 481 | ;; letter is used to represent the glottal stop. While the most common | ||
| 482 | ;; seems to be <ˀ> [modifier letter glottal stop], this input method | ||
| 483 | ;; provides mappings for other glottal stop letters in common use. | ||
| 484 | ;; Other common orthographies should be covered by this input method as | ||
| 485 | ;; well. | ||
| 486 | ;; | ||
| 487 | ;; Reference work for Cayuga orthography: | ||
| 488 | ;; | ||
| 489 | ;; Carrie Dyck, Frances Froman, Alfred Keye & Lottie Keye. 2024. A | ||
| 490 | ;; grammar and dictionary of Gayogo̱hó:nǫˀ (Cayuga) (Estudios de | ||
| 491 | ;; Lingüística Amerindia 1). Berlin: Language Science Press. | ||
| 492 | ;; | ||
| 493 | |||
| 494 | (defconst iroquoian-cayuga-modifier-alist nil | ||
| 495 | "Alist of rules for modifier letters in Cayuga input methods. | ||
| 496 | Entries are as with rules in `quail-define-rules'.") | ||
| 497 | |||
| 498 | (defconst iroquoian-cayuga-vowel-alist | ||
| 499 | '(("a'" ?á) | ||
| 500 | ("a-" ["a̱"]) | ||
| 501 | ("A'" ?Á) | ||
| 502 | ("A-" ["A̱"]) | ||
| 503 | ("e'" ?é) | ||
| 504 | ("e-" ["e̱"]) | ||
| 505 | ("E'" ?É) | ||
| 506 | ("E-" ["E̱"]) | ||
| 507 | ("i'" ?í) | ||
| 508 | ("i-" ["i̱"]) | ||
| 509 | ("I'" ?Í) | ||
| 510 | ("I-" ["I̱"]) | ||
| 511 | ("o'" ?ó) | ||
| 512 | ("o-" ["o̱"]) | ||
| 513 | ("O'" ?Ó) | ||
| 514 | ("O-" ["O̱"]) | ||
| 515 | ("u'" ?ú) | ||
| 516 | ("u-" ["u̱"]) | ||
| 517 | ("U'" ?Ú) | ||
| 518 | ("U-" ["U̱"]) | ||
| 519 | ("e," ?ę) | ||
| 520 | ("e,'" ["ę́"]) | ||
| 521 | ("e,-" ["ę̱"]) | ||
| 522 | ("E," ?Ę) | ||
| 523 | ("E,'" ["Ę́"]) | ||
| 524 | ("E,-" ["Ę̱"]) | ||
| 525 | ("o," ?ǫ) | ||
| 526 | ("o,'" ["ǫ́"]) | ||
| 527 | ("o,-" ["ǫ̱"]) | ||
| 528 | ("O," ?Ǫ) | ||
| 529 | ("O,'" ["Ǫ́"]) | ||
| 530 | ("O,-" ["Ǫ̱"]) | ||
| 531 | |||
| 532 | ("a''" ["a'"]) | ||
| 533 | ("a--" ["a-"]) | ||
| 534 | ("A''" ["A'"]) | ||
| 535 | ("A--" ["A-"]) | ||
| 536 | ("e''" ["e'"]) | ||
| 537 | ("e--" ["e-"]) | ||
| 538 | ("E''" ["E'"]) | ||
| 539 | ("E--" ["E-"]) | ||
| 540 | ("i''" ["i'"]) | ||
| 541 | ("i--" ["i-"]) | ||
| 542 | ("I''" ["I'"]) | ||
| 543 | ("I--" ["I-"]) | ||
| 544 | ("o''" ["o'"]) | ||
| 545 | ("o--" ["o-"]) | ||
| 546 | ("O''" ["O'"]) | ||
| 547 | ("O--" ["O-"]) | ||
| 548 | ("u''" ["u'"]) | ||
| 549 | ("u--" ["u-"]) | ||
| 550 | ("U''" ["U'"]) | ||
| 551 | ("U--" ["U-"]) | ||
| 552 | ("e,," ["e,"]) | ||
| 553 | ("e,''" ["ę'"]) | ||
| 554 | ("e,--" ["ę-"]) | ||
| 555 | ("E,," ["E,"]) | ||
| 556 | ("E,''" ["Ę'"]) | ||
| 557 | ("E,--" ["Ę-"]) | ||
| 558 | ("o,," ["o,"]) | ||
| 559 | ("o,''" ["ǫ'"]) | ||
| 560 | ("o,--" ["ǫ-"]) | ||
| 561 | ("O,," ["O,"]) | ||
| 562 | ("O,''" ["Ǫ'"]) | ||
| 563 | ("O,--" ["Ǫ-"])) | ||
| 564 | "Alist of rules for vowel letters in Cayuga input methods. | ||
| 565 | Entries are as with rules in `quail-define-rules'.") | ||
| 566 | |||
| 567 | (defconst iroquoian-cayuga-consonant-alist | ||
| 568 | '((";;" ?\N{MODIFIER LETTER GLOTTAL STOP}) | ||
| 569 | (";'" ?\N{RIGHT SINGLE QUOTATION MARK})) | ||
| 570 | "Alist of rules for consonant letters in Cayuga input methods. | ||
| 571 | Entries are as with rules in `quail-define-rules'.") | ||
| 572 | |||
| 573 | (quail-define-package | ||
| 574 | "cayuga-postfix" "Cayuga" "CAY<" t | ||
| 575 | "Cayuga (Gayogo̱ho:nǫhnéha:ˀ) input method with postfix modifiers | ||
| 576 | |||
| 577 | Stress diacritics: | ||
| 578 | |||
| 579 | | Key | Description | Example | | ||
| 580 | |------+--------------+---------| | ||
| 581 | | \\=' | Acute accent | a' -> á | | ||
| 582 | |||
| 583 | Doubling the postfix separates the letter and the postfix. | ||
| 584 | |||
| 585 | Vowels: | ||
| 586 | |||
| 587 | | Key | Translation | Description | | ||
| 588 | |-----+-------------+---------------------------------| | ||
| 589 | | e, | ę | Mid front nasal vowel | | ||
| 590 | | E, | Ę | Mid front nasal vowel (capital) | | ||
| 591 | | o, | ǫ | Mid back nasal vowel | | ||
| 592 | | O, | Ǫ | Mid back nasal vowel (capital) | | ||
| 593 | |||
| 594 | a, e, i, o, and u are bound to a single key. | ||
| 595 | |||
| 596 | Consonants: | ||
| 597 | |||
| 598 | | Key | Translation | Description | | ||
| 599 | |-------+-------------+--------------------------| | ||
| 600 | | ;; | ˀ | Glottal stop | | ||
| 601 | | ;\\=' | \\=’ | Glottal stop (alternate) | | ||
| 602 | |||
| 603 | d, g, h, j, k, n, r, s, t, w, y, and f are bound to a single key. | ||
| 604 | |||
| 605 | Devoicing: | ||
| 606 | |||
| 607 | | Key | Description | Example | | ||
| 608 | |-----+------------------------+----------| | ||
| 609 | | - | Combining macron below | a- -> a̱ | | ||
| 610 | |||
| 611 | Note: Not all fonts can properly display a combining macron low on all | ||
| 612 | vowels. | ||
| 613 | |||
| 614 | To enter a plain hyphen after a vowel, simply type the hyphen twice. | ||
| 615 | |||
| 616 | All Haudenosaunee languages, including Cayuga, can be input | ||
| 617 | simultaneously using the input method `haudenosaunee-postfix'." | ||
| 618 | nil t nil nil nil nil nil nil nil nil t) | ||
| 619 | |||
| 620 | (pcase-dolist (`(,key ,trans) | ||
| 621 | (append iroquoian-cayuga-modifier-alist | ||
| 622 | iroquoian-cayuga-consonant-alist | ||
| 623 | iroquoian-cayuga-vowel-alist)) | ||
| 624 | (quail-defrule key trans)) | ||
| 625 | |||
| 626 | |||
| 627 | ;;; Seneca | ||
| 628 | |||
| 629 | ;; | ||
| 630 | ;; The orthography for the Seneca language is fairly stable with only | ||
| 631 | ;; minor variations, for example, <sy> vs. <š> (currently preferred in | ||
| 632 | ;; community orthography) for the voiceless postalveolar fricative. | ||
| 633 | ;; | ||
| 634 | ;; In the common community orthography, I'm told that acute and grave | ||
| 635 | ;; accents occur rarely and only on nasal vowels (personal | ||
| 636 | ;; communication). However, in works by Wallace Chafe, stress is | ||
| 637 | ;; indicated on non-nasal vowels, as well. The maximal set of letters | ||
| 638 | ;; with accent diacritics is included for the input method, even though | ||
| 639 | ;; many of them apparently don't occur in community orthographies. | ||
| 640 | ;; | ||
| 641 | ;; Reference works for Seneca orthography: | ||
| 642 | ;; | ||
| 643 | ;; Phyllis E. Wms. Bardeau. 2002. Onondowa'ga:' Gawe:no': New Reference | ||
| 644 | ;; Edition. Salamanca, NY: The Seneca Nation of Indians Allegany | ||
| 645 | ;; Education Department. | ||
| 646 | ;; | ||
| 647 | ;; Wallace Chafe. 2015. A Grammar of the Seneca Language. Oakland, CA: | ||
| 648 | ;; University of California Press. | ||
| 649 | ;; | ||
| 650 | |||
| 651 | (defconst iroquoian-seneca-modifier-alist nil | ||
| 652 | "Alist of rules for modifier letters in Seneca input methods. | ||
| 653 | Entries are as with rules in `quail-define-rules'.") | ||
| 654 | |||
| 655 | (defconst iroquoian-seneca-vowel-alist | ||
| 656 | '(("a'" ?á) | ||
| 657 | ("a`" ?à) | ||
| 658 | ("A'" ?Á) | ||
| 659 | ("A`" ?À) | ||
| 660 | ("e'" ?é) | ||
| 661 | ("e`" ?è) | ||
| 662 | ("E'" ?É) | ||
| 663 | ("E`" ?È) | ||
| 664 | ("i'" ?í) | ||
| 665 | ("i`" ?ì) | ||
| 666 | ("I'" ?Í) | ||
| 667 | ("I`" ?Ì) | ||
| 668 | ("o'" ?ó) | ||
| 669 | ("o`" ?ò) | ||
| 670 | ("O'" ?Ó) | ||
| 671 | ("O`" ?Ò) | ||
| 672 | ("a\"" ?ä) | ||
| 673 | ("a\"'" ["ä́"]) | ||
| 674 | ("a\"`" ["ä̀"]) | ||
| 675 | ("A\"" ?Ä) | ||
| 676 | ("A\"'" ["Ä́"]) | ||
| 677 | ("A\"`" ["Ä̀"]) | ||
| 678 | ("e\"" ?ë) | ||
| 679 | ("e\"'" ["ë́"]) | ||
| 680 | ("e\"`" ["ë̀"]) | ||
| 681 | ("E\"" ?Ë) | ||
| 682 | ("E\"'" ["Ë́"]) | ||
| 683 | ("E\"`" ["Ë̀"]) | ||
| 684 | ("o\"" ?ö) | ||
| 685 | ("o\"'" ["ö́"]) | ||
| 686 | ("o\"`" ["ö̀"]) | ||
| 687 | ("O\"" ?Ö) | ||
| 688 | ("O\"'" ["Ö́"]) | ||
| 689 | ("O\"`" ["Ö̀"]) | ||
| 690 | ;; Rare (e.g., niwú’u:h 'it is tiny' [Chafe 2015]): | ||
| 691 | ("u'" ?ú) | ||
| 692 | ("u`" ?ù) | ||
| 693 | ("U'" ?Ú) | ||
| 694 | ("U`" ?Ù) | ||
| 695 | |||
| 696 | ("a''" ["a'"]) | ||
| 697 | ("a``" ["a`"]) | ||
| 698 | ("A''" ["A'"]) | ||
| 699 | ("A``" ["A`"]) | ||
| 700 | ("e''" ["e'"]) | ||
| 701 | ("e``" ["e`"]) | ||
| 702 | ("E''" ["E'"]) | ||
| 703 | ("E``" ["E`"]) | ||
| 704 | ("i''" ["i'"]) | ||
| 705 | ("i``" ["i`"]) | ||
| 706 | ("I''" ["I'"]) | ||
| 707 | ("I``" ["I`"]) | ||
| 708 | ("o''" ["o'"]) | ||
| 709 | ("o``" ["o`"]) | ||
| 710 | ("O''" ["O'"]) | ||
| 711 | ("O``" ["O`"]) | ||
| 712 | ("a\"\"" ["a\""]) | ||
| 713 | ("a\"''" ["ä'"]) | ||
| 714 | ("a\"``" ["ä`"]) | ||
| 715 | ("A\"\"" ["A\""]) | ||
| 716 | ("A\"''" ["Ä'"]) | ||
| 717 | ("A\"``" ["Ä`"]) | ||
| 718 | ("e\"\"" ["e\""]) | ||
| 719 | ("e\"''" ["ë'"]) | ||
| 720 | ("e\"``" ["ë`"]) | ||
| 721 | ("E\"\"" ["E\""]) | ||
| 722 | ("E\"''" ["Ë'"]) | ||
| 723 | ("E\"``" ["Ë`"]) | ||
| 724 | ("o\"\"" ["o\""]) | ||
| 725 | ("o\"''" ["ö'"]) | ||
| 726 | ("o\"``" ["ö`"]) | ||
| 727 | ("O\"\"" ["O\""]) | ||
| 728 | ("O\"''" ["Ö'"]) | ||
| 729 | ("O\"``" ["Ö`"]) | ||
| 730 | ("u''" ["u'"]) | ||
| 731 | ("u``" ["u`"]) | ||
| 732 | ("U''" ["U'"]) | ||
| 733 | ("U``" ["U`"])) | ||
| 734 | "Alist of rules for vowel letters in Seneca input methods. | ||
| 735 | Entries are as with rules in `quail-define-rules'.") | ||
| 736 | |||
| 737 | (defconst iroquoian-seneca-consonant-alist | ||
| 738 | '((";;" ?\N{RIGHT SINGLE QUOTATION MARK}) | ||
| 739 | ("s/" ?š) | ||
| 740 | ("s//" ["s/"]) | ||
| 741 | ("S/" ?Š) | ||
| 742 | ("S//" ["S/"])) | ||
| 743 | "Alist of rules for consonant letters in Seneca input methods. | ||
| 744 | Entries are as with rules in `quail-define-rules'.") | ||
| 745 | |||
| 746 | (quail-define-package | ||
| 747 | "seneca-postfix" "Seneca" "SEE<" t | ||
| 748 | "Seneca (Onödowá’ga:’) input method with postfix modifiers | ||
| 749 | |||
| 750 | Stress diacritics: | ||
| 751 | |||
| 752 | | Key | Description | Example | | ||
| 753 | |------+--------------+---------| | ||
| 754 | | \\=' | Acute accent | a' -> á| | ||
| 755 | | \\=` | Grave accent | a` -> à| | ||
| 756 | |||
| 757 | Doubling any of these postfixes separates the letter and the postfix. | ||
| 758 | |||
| 759 | Vowels: | ||
| 760 | |||
| 761 | | Key | Translation | Description | | ||
| 762 | |-----+-------------+------------------------------------| | ||
| 763 | | e\" | ë | Mid front nasal vowel | | ||
| 764 | | E\" | Ë | Mid front nasal vowel (capital) | | ||
| 765 | | o\" | ö | Low-mid back nasal vowel | | ||
| 766 | | O\" | Ö | Low-mid back nasal vowel (capital) | | ||
| 767 | | a\" | ä | Low front vowel | | ||
| 768 | | A\" | Ä | Low front vowel (capital) | | ||
| 769 | |||
| 770 | a, e, i, o, and u are bound to a single key. | ||
| 771 | |||
| 772 | Consonants: | ||
| 773 | |||
| 774 | | Key | Translation | Description | | ||
| 775 | |-------+-------------+--------------------------------------------| | ||
| 776 | | ;; | \\=’ | Glottal stop | | ||
| 777 | | s/ | š | Voiceless postalveolar fricative | | ||
| 778 | | S/ | Š | Voiceless postalveolar fricative (capital) | | ||
| 779 | |||
| 780 | d, g, h, j, k, n, s, t, w, y, and z are bound to a single key. | ||
| 781 | |||
| 782 | b, m, and p are used rarely in ideophones and nicknames. They are also | ||
| 783 | each bound to a single key. | ||
| 784 | |||
| 785 | All Haudenosaunee languages, including Seneca, can be input | ||
| 786 | simultaneously using the input method `haudenosaunee-postfix'." | ||
| 787 | nil t nil nil nil nil nil nil nil nil t) | ||
| 788 | |||
| 789 | (pcase-dolist (`(,key ,trans) | ||
| 790 | (append iroquoian-seneca-modifier-alist | ||
| 791 | iroquoian-seneca-consonant-alist | ||
| 792 | iroquoian-seneca-vowel-alist)) | ||
| 793 | (quail-defrule key trans)) | ||
| 794 | |||
| 795 | |||
| 796 | ;;; Haudenosaunee (composite Northern Iroquoian) | ||
| 797 | |||
| 798 | ;; | ||
| 799 | ;; This input method represents a composite input method for all of the | ||
| 800 | ;; Northern Iroquoian languages included above. | ||
| 801 | ;; | ||
| 802 | ;; Although the "Iroquoian languages" is a standard term employed by | ||
| 803 | ;; linguists and scholars, some believe the term "Iroquois" to be of | ||
| 804 | ;; derogatory origin (see Dyck 2024). Hence, some prefer to refer to | ||
| 805 | ;; what are collectively termed by linguists the "Five Nations Iroquois" | ||
| 806 | ;; languages (Mohawk, Oneida, Onondaga, Cayuga, Seneca) by the autonym | ||
| 807 | ;; "Haudenosaunee" (e.g., "Haudenosaunee languages"). | ||
| 808 | ;; | ||
| 809 | ;; However, it should be noted that the term "Haudenosaunee" is itself | ||
| 810 | ;; an Anglicized form, probably from Seneca Hodínöhsö:ni:h 'they make | ||
| 811 | ;; houses' or Hodínöhšo:ni:h 'People of the Long House'. Speakers of | ||
| 812 | ;; Cayuga may prefer the word Hodinǫhsǫ:nih, and speakers of Mohawk may | ||
| 813 | ;; prefer Rotinonhsón:ni or Rotinonhsíón:ni. These terms themselves | ||
| 814 | ;; collectively relate to the confederacy of Indigenous nations that has | ||
| 815 | ;; existed in what is now known as New York State in Northeastern North | ||
| 816 | ;; America for many centuries, the founding of which is retold in oral | ||
| 817 | ;; tradition in the story of The Peacemaker. | ||
| 818 | ;; | ||
| 819 | ;; It should also be noted that while Tuscarora and Wendat languages are | ||
| 820 | ;; both sometimes included under the "Haudenosaunee languages" umbrella | ||
| 821 | ;; (and by implication, those groups as a part of the Haudenosaunee | ||
| 822 | ;; Confederacy), the exact extent of what defines "Haudenosaunee" has | ||
| 823 | ;; occasionally caused controversy. | ||
| 824 | ;; | ||
| 825 | ;; Additionally, some prefer to collectively refer to the "Haudenosaunee | ||
| 826 | ;; languages" using the terms Onkwehonwehnéha (Mohawk), Ukwehuwehnéha | ||
| 827 | ;; (Oneida), Ǫgwehǫwekhá’ (Onondaga), Ǫgwehǫwéhneha:ˀ (Cayuga), and | ||
| 828 | ;; Ögwé’öwe:ka:’ (Seneca), which all mean 'in the manner of the Original | ||
| 829 | ;; People'. | ||
| 830 | ;; | ||
| 831 | ;; Bearing all of this in mind, I have opted to retain the term | ||
| 832 | ;; "Iroquoian" in the name of this file (`iroquoian.el') (and hence, in | ||
| 833 | ;; the symbol names in its namespace), while using "Haudenosaunee" in | ||
| 834 | ;; the name of the input method that encompasses all of the languages so | ||
| 835 | ;; far implemented: "haudenosaunee-postfix" --- this is the name shown | ||
| 836 | ;; as a completion candidate after users enter M-x set-input-method RET. | ||
| 837 | ;; Note that those searching for input methods for the individual | ||
| 838 | ;; languages should have no problem finding them knowing only their | ||
| 839 | ;; Anglicized names (e.g., Mohawk, Oneida, etc.), as these have been | ||
| 840 | ;; retained in the names of the corresponding input methods. | ||
| 841 | ;; | ||
| 842 | ;; Above all, I hope that these decisions help those who wish to speak, | ||
| 843 | ;; read, and write Onkwehonwehnéha. | ||
| 844 | ;; | ||
| 845 | ;; Iorihowá:nen ne aiónhnheke’ ne raotiwén:na’! | ||
| 846 | ;; It is important that the language continues to live! | ||
| 847 | ;; | ||
| 848 | |||
| 849 | (defconst iroquoian-haudenosaunee-modifier-alist | ||
| 850 | (seq-uniq (append iroquoian-mohawk-modifier-alist | ||
| 851 | iroquoian-oneida-modifier-alist | ||
| 852 | iroquoian-onondaga-modifier-alist | ||
| 853 | iroquoian-cayuga-modifier-alist | ||
| 854 | iroquoian-seneca-modifier-alist)) | ||
| 855 | "Alist of rules for modifier letters in Haudenosaunee input methods. | ||
| 856 | Entries are as with rules in `quail-define-rules'.") | ||
| 857 | |||
| 858 | (defconst iroquoian-haudenosaunee-vowel-alist | ||
| 859 | (seq-uniq (append iroquoian-mohawk-vowel-alist | ||
| 860 | iroquoian-oneida-vowel-alist | ||
| 861 | iroquoian-onondaga-vowel-alist | ||
| 862 | iroquoian-cayuga-vowel-alist | ||
| 863 | iroquoian-seneca-vowel-alist)) | ||
| 864 | "Alist of rules for vowel letters in Haudenosaunee input methods. | ||
| 865 | Entries are as with rules in `quail-define-rules'.") | ||
| 866 | |||
| 867 | (defconst iroquoian-haudenosaunee-consonant-alist | ||
| 868 | (seq-uniq (append | ||
| 869 | '((";;" ?\N{RIGHT SINGLE QUOTATION MARK}) | ||
| 870 | (";'" ?\N{MODIFIER LETTER GLOTTAL STOP}) | ||
| 871 | (";:" ?\N{LATIN LETTER GLOTTAL STOP})) | ||
| 872 | iroquoian-mohawk-consonant-alist | ||
| 873 | iroquoian-oneida-consonant-alist | ||
| 874 | iroquoian-onondaga-consonant-alist | ||
| 875 | iroquoian-cayuga-consonant-alist | ||
| 876 | iroquoian-seneca-consonant-alist) | ||
| 877 | (lambda (c1 c2) | ||
| 878 | (equal (car c1) (car c2)))) | ||
| 879 | "Alist of rules for consonant letters in Haudenosaunee input methods. | ||
| 880 | Entries are as with rules in `quail-define-rules'.") | ||
| 881 | |||
| 882 | (defconst iroquoian-haudenosaunee-devoicing-alist | ||
| 883 | '(("_" ?\N{COMBINING LOW LINE}) | ||
| 884 | ("__" ?_)) | ||
| 885 | "Alist of rules for devoicing characters in Haudenosaunee input methods. | ||
| 886 | Entries are as with rules in `quail-define-rules'.") | ||
| 887 | |||
| 888 | (defconst iroquoian-haudenosaunee-nasal-alist iroquoian-onondaga-nasal-alist | ||
| 889 | "Alist of rules for nasal modifier letters in Haudenosaunee input methods. | ||
| 890 | Entries are as with rules in `quail-define-rules'.") | ||
| 891 | |||
| 892 | (quail-define-package | ||
| 893 | "haudenosaunee-postfix" "Haudenosaunee" "HOD<" t | ||
| 894 | "Composite input method for Haudenosaunee (Northern Iroquoian) languages | ||
| 895 | |||
| 896 | This input method can be used to enter the following languages: | ||
| 897 | |||
| 898 | - Mohawk (Kanien’kéha / Onkwehonwehnéha) | ||
| 899 | - Oneida (Onʌyota:ká: / Ukwehuwehnéha) | ||
| 900 | - Cayuga (Gayogo̱ho:nǫhnéha:ˀ) | ||
| 901 | - Onondaga (Onųdaʔgegáʔ) | ||
| 902 | - Seneca (Onödowá’ga:’) | ||
| 903 | |||
| 904 | Modifiers: | ||
| 905 | |||
| 906 | | Key | Translation | Description | | ||
| 907 | |-----+-------------+--------------------------| | ||
| 908 | | :: | · | Vowel length (alternate) | | ||
| 909 | |||
| 910 | Stress diacritics: | ||
| 911 | |||
| 912 | | Key | Description | Example | | ||
| 913 | |------+--------------+---------| | ||
| 914 | | \\=' | Acute accent | a' -> á | | ||
| 915 | | \\=` | Grave accent | a` -> à | | ||
| 916 | |||
| 917 | Doubling any of these postfixes separates the letter and the postfix. | ||
| 918 | |||
| 919 | Vowels: | ||
| 920 | |||
| 921 | | Key | Translation | Description | | ||
| 922 | |----------------------------------------------------------------------| | ||
| 923 | | Mohawk | | ||
| 924 | | -------------------------------------------------------------------- | | ||
| 925 | | Single-key vowels: a e i o | | ||
| 926 | |----------------------------------------------------------------------| | ||
| 927 | | Oneida | | ||
| 928 | | -------------------------------------------------------------------- | | ||
| 929 | | e/ | ʌ | Mid central nasal vowel | | ||
| 930 | | E/ | Ʌ | Mid central nasal vowel (capital) | | ||
| 931 | | Single-key vowels: a e i o u | | ||
| 932 | |----------------------------------------------------------------------| | ||
| 933 | | Onondaga | | ||
| 934 | | (Six Nations of the Grand River) | | ||
| 935 | | -------------------------------------------------------------------- | | ||
| 936 | | e, | ę | Mid front nasal vowel | | ||
| 937 | | E, | Ę | Mid front nasal vowel (capital) | | ||
| 938 | | o, | ǫ | Back high nasal vowel | | ||
| 939 | | O, | Ǫ | Back high nasal vowel (capital) | | ||
| 940 | | a\" | ä | Low front rounded vowel | | ||
| 941 | | A\" | Ä | Low front rounded vowel (capital) | | ||
| 942 | | -------------------------------------------------------------------- | | ||
| 943 | | (Onondaga Nation, New York) | | ||
| 944 | | -------------------------------------------------------------------- | | ||
| 945 | | en~ | eñ | Mid front nasal vowel | | ||
| 946 | | EN~ | EÑ | Mid front nasal vowel (capital) | | ||
| 947 | | on~ | oñ | Back high nasal vowel | | ||
| 948 | | ON~ | OÑ | Back high nasal vowel (capital) | | ||
| 949 | | a\" | ä | Low front rounded vowel | | ||
| 950 | | A\" | Ä | Low front rounded vowel (capital) | | ||
| 951 | | -------------------------------------------------------------------- | | ||
| 952 | | (Hanni Woodbury, 2003) | | ||
| 953 | | -------------------------------------------------------------------- | | ||
| 954 | | e, | ę | Mid front nasal vowel | | ||
| 955 | | E, | Ę | Mid front nasal vowel (capital) | | ||
| 956 | | u, | ų | Back high nasal vowel | | ||
| 957 | | U, | Ų | Back high nasal vowel (capital) | | ||
| 958 | | a/ | æ | Low front rounded vowel | | ||
| 959 | | A/ | Æ | Low front rounded vowel (capital) | | ||
| 960 | | -------------------------------------------------------------------- | | ||
| 961 | | (all) | | ||
| 962 | | -------------------------------------------------------------------- | | ||
| 963 | | Single-key vowels: a e i o | | ||
| 964 | |----------------------------------------------------------------------| | ||
| 965 | | Cayuga | | ||
| 966 | | -------------------------------------------------------------------- | | ||
| 967 | | e, | ę | Mid front nasal vowel | | ||
| 968 | | E, | Ę | Mid front nasal vowel (capital) | | ||
| 969 | | o, | ǫ | Mid back nasal vowel | | ||
| 970 | | O, | Ǫ | Mid back nasal vowel (capital) | | ||
| 971 | | Single-key vowels: a e i o u | | ||
| 972 | |----------------------------------------------------------------------| | ||
| 973 | | Seneca | | ||
| 974 | | -------------------------------------------------------------------- | | ||
| 975 | | e\" | ë | Mid front nasal vowel | | ||
| 976 | | E\" | Ë | Mid front nasal vowel (capital) | | ||
| 977 | | o\" | ö | Low-mid back nasal vowel | | ||
| 978 | | O\" | Ö | Low-mid back nasal vowel (capital) | | ||
| 979 | | a\" | ä | Low front vowel | | ||
| 980 | | A\" | Ä | Low front vowel (capital) | | ||
| 981 | | Single-key vowels: a e i o u | | ||
| 982 | |||
| 983 | Consonants: | ||
| 984 | |||
| 985 | | Key | Translation | Description | | ||
| 986 | |----------------------------------------------------------------------| | ||
| 987 | | Mohawk | | ||
| 988 | | -------------------------------------------------------------------- | | ||
| 989 | | ;; | \\=’ | Glottal stop | | ||
| 990 | | Single-key consonants: h k n r s t w y (b m p) | | ||
| 991 | |----------------------------------------------------------------------| | ||
| 992 | | Oneida | | ||
| 993 | | -------------------------------------------------------------------- | | ||
| 994 | | ;\\=' | ˀ | Glottal stop | | ||
| 995 | | ;; | \\=’ | Glottal stop (alternate) | | ||
| 996 | | Single-key consonants: h k l n s t w y | | ||
| 997 | |----------------------------------------------------------------------| | ||
| 998 | | Onondaga | | ||
| 999 | | -------------------------------------------------------------------- | | ||
| 1000 | | ;; | \\=’ | Glottal stop | | ||
| 1001 | | ;: | ʔ | Glottal stop (alternate) | | ||
| 1002 | | Single-key consonants: c d g h j k n s t w y | | ||
| 1003 | |----------------------------------------------------------------------| | ||
| 1004 | | Cayuga | | ||
| 1005 | | -------------------------------------------------------------------- | | ||
| 1006 | | ;\\=' | ˀ | Glottal stop | | ||
| 1007 | | ;; | \\=’ | Glottal stop (alternate) | | ||
| 1008 | | Single-key consonants: d g h j k n r s t w y (f) | | ||
| 1009 | |----------------------------------------------------------------------| | ||
| 1010 | | Seneca | | ||
| 1011 | | -------------------------------------------------------------------- | | ||
| 1012 | | ;; | \\=’ | Glottal stop | | ||
| 1013 | | s/ | š | Voiceless postalveolar fricative | | ||
| 1014 | | S/ | Š | Voiceless postalveolar fricative (capital) | | ||
| 1015 | | Single-key consonants: d g h j k n s t w y z (b m p) | | ||
| 1016 | |||
| 1017 | Devoicing: | ||
| 1018 | |||
| 1019 | | Key | Description | Examples | | ||
| 1020 | |-----+------------------------+------------------------------| | ||
| 1021 | | _ | Combining low line | a_ -> a̲, · -> ·̲ | | ||
| 1022 | | - | Combining macron below | a- -> a̱(after vowels only) | | ||
| 1023 | |||
| 1024 | Note: Not all fonts can properly display a combining low line on all | ||
| 1025 | letters and a combining macron below on all vowels. | ||
| 1026 | |||
| 1027 | Underlining is commonly used in Oneida to indicate devoiced syllables on | ||
| 1028 | pre-pausal forms (also called utterance-final forms). Alternatively, | ||
| 1029 | markup or other methods can be used to create an underlining effect. | ||
| 1030 | |||
| 1031 | To enter a plain underscore, the underscore twice. | ||
| 1032 | |||
| 1033 | Macron below is commonly used in Cayuga to indicate devoiced vowels. | ||
| 1034 | |||
| 1035 | To enter a plain hyphen after a vowel, simply type the hyphen twice. | ||
| 1036 | |||
| 1037 | There are individual input methods for each of the languages that can be | ||
| 1038 | entered with this input method: `mohawk-postfix', `oneida-postfix', | ||
| 1039 | `onondaga-postfix', `cayuga-postfix', `seneca-postfix'." | ||
| 1040 | nil t nil nil nil nil nil nil nil nil t) | ||
| 1041 | |||
| 1042 | (pcase-dolist (`(,key ,trans) | ||
| 1043 | (append iroquoian-haudenosaunee-modifier-alist | ||
| 1044 | iroquoian-haudenosaunee-consonant-alist | ||
| 1045 | iroquoian-haudenosaunee-nasal-alist | ||
| 1046 | iroquoian-haudenosaunee-vowel-alist | ||
| 1047 | iroquoian-haudenosaunee-devoicing-alist)) | ||
| 1048 | (quail-defrule key trans)) | ||
| 1049 | |||
| 1050 | (provide 'iroquoian) | ||
| 1051 | ;;; iroquoian.el ends here | ||
diff --git a/lisp/net/eww.el b/lisp/net/eww.el index 2d351dff88f..4d4d4d6beac 100644 --- a/lisp/net/eww.el +++ b/lisp/net/eww.el | |||
| @@ -2076,7 +2076,12 @@ Interactively, EVENT is the value of `last-nonmenu-event'." | |||
| 2076 | (insert-file-contents file) | 2076 | (insert-file-contents file) |
| 2077 | (buffer-string))) | 2077 | (buffer-string))) |
| 2078 | (cons "name" name) | 2078 | (cons "name" name) |
| 2079 | (cons "filename" file)) | 2079 | ;; RFC 2183 declares that recipients should |
| 2080 | ;; only respect the basename of the filename | ||
| 2081 | ;; parameter, and the leading directories | ||
| 2082 | ;; might divulge private information, so we | ||
| 2083 | ;; only send the basename in our request. | ||
| 2084 | (cons "filename" (file-name-nondirectory file))) | ||
| 2080 | values))) | 2085 | values))) |
| 2081 | ((equal (plist-get input :type) "submit") | 2086 | ((equal (plist-get input :type) "submit") |
| 2082 | ;; We want the values from buttons if we hit a button if | 2087 | ;; We want the values from buttons if we hit a button if |
diff --git a/lisp/net/newst-plainview.el b/lisp/net/newst-plainview.el index 0ff7985f0dc..4122777ac8c 100644 --- a/lisp/net/newst-plainview.el +++ b/lisp/net/newst-plainview.el | |||
| @@ -805,6 +805,7 @@ not get changed." | |||
| 805 | (widen) | 805 | (widen) |
| 806 | (put-text-property (point) pos 'nt-age 'old) | 806 | (put-text-property (point) pos 'nt-age 'old) |
| 807 | (newsticker--buffer-set-faces (point) pos))) | 807 | (newsticker--buffer-set-faces (point) pos))) |
| 808 | (newsticker--cache-save-feed (newsticker--cache-get-feed feed)) | ||
| 808 | (set-buffer-modified-p nil))))))) | 809 | (set-buffer-modified-p nil))))))) |
| 809 | 810 | ||
| 810 | (defun newsticker-mark-item-at-point-as-immortal () | 811 | (defun newsticker-mark-item-at-point-as-immortal () |
| @@ -1279,7 +1280,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs." | |||
| 1279 | (let ((img (newsticker--image-read feed-name-symbol | 1280 | (let ((img (newsticker--image-read feed-name-symbol |
| 1280 | disabled))) | 1281 | disabled))) |
| 1281 | (when img | 1282 | (when img |
| 1282 | (newsticker--insert-image img (car item))))) | 1283 | (newsticker--insert-image img (format "[logo: %s]" (car item)))))) |
| 1283 | (setq format (substring format 2))) | 1284 | (setq format (substring format 2))) |
| 1284 | ((string= "%L" prefix) | 1285 | ((string= "%L" prefix) |
| 1285 | ;; logo or title | 1286 | ;; logo or title |
| @@ -1292,7 +1293,7 @@ FEED-NAME-SYMBOL tells to which feed this item belongs." | |||
| 1292 | (let ((img (newsticker--image-read feed-name-symbol | 1293 | (let ((img (newsticker--image-read feed-name-symbol |
| 1293 | disabled))) | 1294 | disabled))) |
| 1294 | (if img | 1295 | (if img |
| 1295 | (newsticker--insert-image img (car item)) | 1296 | (newsticker--insert-image img (format "[logo: %s]" (car item))) |
| 1296 | (when (car item) | 1297 | (when (car item) |
| 1297 | (setq pos-text-start (point-marker)) | 1298 | (setq pos-text-start (point-marker)) |
| 1298 | (if (eq (newsticker--age item) 'feed) | 1299 | (if (eq (newsticker--age item) 'feed) |
diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 283a545bfb4..2438029bfdd 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el | |||
| @@ -718,10 +718,11 @@ class declarations.") | |||
| 718 | "aiter" "anext" "ascii" "breakpoint" "bytearray" "bytes" "exec" | 718 | "aiter" "anext" "ascii" "breakpoint" "bytearray" "bytes" "exec" |
| 719 | ;; Special attributes: | 719 | ;; Special attributes: |
| 720 | ;; https://docs.python.org/3/reference/datamodel.html | 720 | ;; https://docs.python.org/3/reference/datamodel.html |
| 721 | "__annotations__" "__closure__" "__code__" | 721 | "__annotations__" "__bases__" "__closure__" "__code__" |
| 722 | "__defaults__" "__dict__" "__doc__" "__globals__" | 722 | "__defaults__" "__dict__" "__doc__" "__firstlineno__" |
| 723 | "__kwdefaults__" "__name__" "__module__" "__package__" | 723 | "__globals__" "__kwdefaults__" "__name__" "__module__" |
| 724 | "__qualname__" | 724 | "__mro__" "__package__" "__qualname__" |
| 725 | "__static_attributes__" "__type_params__" | ||
| 725 | ;; Extras: | 726 | ;; Extras: |
| 726 | "__all__") | 727 | "__all__") |
| 727 | symbol-end) . font-lock-builtin-face)) | 728 | symbol-end) . font-lock-builtin-face)) |
| @@ -1034,10 +1035,12 @@ It makes underscores and dots word constituent chars.") | |||
| 1034 | ">>" ">>=" "|" "|=" "~" "@" "@=")) | 1035 | ">>" ">>=" "|" "|=" "~" "@" "@=")) |
| 1035 | 1036 | ||
| 1036 | (defvar python--treesit-special-attributes | 1037 | (defvar python--treesit-special-attributes |
| 1037 | '("__annotations__" "__closure__" "__code__" | 1038 | '("__annotations__" "__bases__" "__closure__" "__code__" |
| 1038 | "__defaults__" "__dict__" "__doc__" "__globals__" | 1039 | "__defaults__" "__dict__" "__doc__" "__firstlineno__" |
| 1039 | "__kwdefaults__" "__name__" "__module__" "__package__" | 1040 | "__globals__" "__kwdefaults__" "__name__" "__module__" |
| 1040 | "__qualname__" "__all__")) | 1041 | "__mro__" "__package__" "__qualname__" |
| 1042 | "__static_attributes__" "__type_params__" | ||
| 1043 | "__all__")) | ||
| 1041 | 1044 | ||
| 1042 | (defvar python--treesit-exceptions | 1045 | (defvar python--treesit-exceptions |
| 1043 | '(;; Python 2 and 3: | 1046 | '(;; Python 2 and 3: |
diff --git a/lisp/subr.el b/lisp/subr.el index e630087b68f..b56512aac05 100644 --- a/lisp/subr.el +++ b/lisp/subr.el | |||
| @@ -299,7 +299,7 @@ value of last one, or nil if there are none." | |||
| 299 | (if body | 299 | (if body |
| 300 | (list 'if cond (cons 'progn body)) | 300 | (list 'if cond (cons 'progn body)) |
| 301 | (macroexp-warn-and-return (format-message "`when' with empty body") | 301 | (macroexp-warn-and-return (format-message "`when' with empty body") |
| 302 | cond '(empty-body when) t))) | 302 | (list 'progn cond nil) '(empty-body when) t))) |
| 303 | 303 | ||
| 304 | (defmacro unless (cond &rest body) | 304 | (defmacro unless (cond &rest body) |
| 305 | "If COND yields nil, do BODY, else return nil. | 305 | "If COND yields nil, do BODY, else return nil. |
| @@ -309,7 +309,7 @@ value of last one, or nil if there are none." | |||
| 309 | (if body | 309 | (if body |
| 310 | (cons 'if (cons cond (cons nil body))) | 310 | (cons 'if (cons cond (cons nil body))) |
| 311 | (macroexp-warn-and-return (format-message "`unless' with empty body") | 311 | (macroexp-warn-and-return (format-message "`unless' with empty body") |
| 312 | cond '(empty-body unless) t))) | 312 | (list 'progn cond nil) '(empty-body unless) t))) |
| 313 | 313 | ||
| 314 | (defsubst subr-primitive-p (object) | 314 | (defsubst subr-primitive-p (object) |
| 315 | "Return t if OBJECT is a built-in primitive written in C. | 315 | "Return t if OBJECT is a built-in primitive written in C. |
diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index 7579608ac22..911bd72184d 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el | |||
| @@ -469,10 +469,10 @@ See the documentation of `create-fontset-from-fontset-spec' for the format.") | |||
| 469 | "application/yaml" | 469 | "application/yaml" |
| 470 | "application/json-seq" | 470 | "application/json-seq" |
| 471 | "\\`text/" | 471 | "\\`text/" |
| 472 | "+xml\\'" | 472 | "\\+xml\\'" |
| 473 | "+json\\'" | 473 | "\\+json\\'" |
| 474 | "+yaml\\'" | 474 | "\\+yaml\\'" |
| 475 | "+json-seq\\'")) | 475 | "\\+json-seq\\'")) |
| 476 | 476 | ||
| 477 | (defun w32--mime-type-textual-p (mime-type) | 477 | (defun w32--mime-type-textual-p (mime-type) |
| 478 | "Returns t if MIME-TYPE, a symbol, names a textual MIME type. | 478 | "Returns t if MIME-TYPE, a symbol, names a textual MIME type. |
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el index 194b181f3e9..dd6079d22ab 100644 --- a/lisp/vc/vc.el +++ b/lisp/vc/vc.el | |||
| @@ -1738,6 +1738,8 @@ Type \\[vc-next-action] to check in changes.") | |||
| 1738 | (format "%d files" (length files)) | 1738 | (format "%d files" (length files)) |
| 1739 | "this file")))) | 1739 | "this file")))) |
| 1740 | 1740 | ||
| 1741 | (declare-function mail-text "sendmail" ()) | ||
| 1742 | (declare-function message-goto-body "message" (&optional interactive)) | ||
| 1741 | (defun vc-steal-lock (file rev owner) | 1743 | (defun vc-steal-lock (file rev owner) |
| 1742 | "Steal the lock on FILE." | 1744 | "Steal the lock on FILE." |
| 1743 | (let (file-description) | 1745 | (let (file-description) |
| @@ -1758,7 +1760,10 @@ Type \\[vc-next-action] to check in changes.") | |||
| 1758 | ;; goes wrong, we don't want to send any mail. | 1760 | ;; goes wrong, we don't want to send any mail. |
| 1759 | (compose-mail owner (format "Stolen lock on %s" file-description)) | 1761 | (compose-mail owner (format "Stolen lock on %s" file-description)) |
| 1760 | (setq default-directory (expand-file-name "~/")) | 1762 | (setq default-directory (expand-file-name "~/")) |
| 1761 | (goto-char (point-max)) | 1763 | (cond |
| 1764 | ((eq mail-user-agent 'sendmail-user-agent) | ||
| 1765 | (mail-text)) | ||
| 1766 | ((message-goto-body))) | ||
| 1762 | (insert | 1767 | (insert |
| 1763 | (format "I stole the lock on %s, " file-description) | 1768 | (format "I stole the lock on %s, " file-description) |
| 1764 | (current-time-string) | 1769 | (current-time-string) |
diff --git a/src/itree.c b/src/itree.c index 749e65c2eed..f35226ad226 100644 --- a/src/itree.c +++ b/src/itree.c | |||
| @@ -378,9 +378,9 @@ itree_inherit_offset (uintmax_t otick, struct itree_node *node) | |||
| 378 | node->right->offset += node->offset; | 378 | node->right->offset += node->offset; |
| 379 | node->offset = 0; | 379 | node->offset = 0; |
| 380 | } | 380 | } |
| 381 | /* The only thing that matters about `otick` is whether it's equal to | 381 | /* The only thing that matters about 'otick' is whether it's equal to |
| 382 | that of the tree. We could also "blindly" inherit from parent->otick, | 382 | that of the tree. We could also "blindly" inherit from parent->otick, |
| 383 | but we need to tree's `otick` anyway for when there's no parent. */ | 383 | but we need to tree's 'otick' anyway for when there's no parent. */ |
| 384 | if (node->parent == NULL || node->parent->otick == otick) | 384 | if (node->parent == NULL || node->parent->otick == otick) |
| 385 | node->otick = otick; | 385 | node->otick = otick; |
| 386 | } | 386 | } |
| @@ -683,7 +683,7 @@ itree_insert_node (struct itree_tree *tree, struct itree_node *node) | |||
| 683 | struct itree_node *parent = NULL; | 683 | struct itree_node *parent = NULL; |
| 684 | struct itree_node *child = tree->root; | 684 | struct itree_node *child = tree->root; |
| 685 | uintmax_t otick = tree->otick; | 685 | uintmax_t otick = tree->otick; |
| 686 | /* It's the responsibility of the caller to set `otick` on the node, | 686 | /* It's the responsibility of the caller to set 'otick' on the node, |
| 687 | to "confirm" that the begin/end fields are up to date. */ | 687 | to "confirm" that the begin/end fields are up to date. */ |
| 688 | eassert (node->otick == otick); | 688 | eassert (node->otick == otick); |
| 689 | 689 | ||
| @@ -913,8 +913,8 @@ itree_total_offset (struct itree_node *node) | |||
| 913 | link the tree root. | 913 | link the tree root. |
| 914 | 914 | ||
| 915 | Warning: DEST is left unmodified. SOURCE's child links are | 915 | Warning: DEST is left unmodified. SOURCE's child links are |
| 916 | unchanged. Caller is responsible for recalculation of `limit`. | 916 | unchanged. Caller is responsible for recalculation of 'limit'. |
| 917 | Requires both nodes to be using the same effective `offset`. */ | 917 | Requires both nodes to be using the same effective 'offset'. */ |
| 918 | static void | 918 | static void |
| 919 | itree_replace_child (struct itree_tree *tree, | 919 | itree_replace_child (struct itree_tree *tree, |
| 920 | struct itree_node *source, | 920 | struct itree_node *source, |
| @@ -939,8 +939,8 @@ itree_replace_child (struct itree_tree *tree, | |||
| 939 | parent, left and right in surrounding nodes to point to SOURCE. | 939 | parent, left and right in surrounding nodes to point to SOURCE. |
| 940 | 940 | ||
| 941 | Warning: DEST is left unmodified. Caller is responsible for | 941 | Warning: DEST is left unmodified. Caller is responsible for |
| 942 | recalculation of `limit`. Requires both nodes to be using the same | 942 | recalculation of 'limit'. Requires both nodes to be using the same |
| 943 | effective `offset`. */ | 943 | effective 'offset'. */ |
| 944 | static void | 944 | static void |
| 945 | itree_transplant (struct itree_tree *tree, | 945 | itree_transplant (struct itree_tree *tree, |
| 946 | struct itree_node *source, | 946 | struct itree_node *source, |
| @@ -964,38 +964,38 @@ itree_remove (struct itree_tree *tree, struct itree_node *node) | |||
| 964 | eassert (itree_contains (tree, node)); | 964 | eassert (itree_contains (tree, node)); |
| 965 | eassert (check_tree (tree, true)); /* FIXME: Too expensive. */ | 965 | eassert (check_tree (tree, true)); /* FIXME: Too expensive. */ |
| 966 | 966 | ||
| 967 | /* Find `splice`, the leaf node to splice out of the tree. When | 967 | /* Find 'splice', the leaf node to splice out of the tree. When |
| 968 | `node` has at most one child this is `node` itself. Otherwise, | 968 | 'node' has at most one child this is 'node' itself. Otherwise, |
| 969 | it is the in order successor of `node`. */ | 969 | it is the in order successor of 'node'. */ |
| 970 | itree_inherit_offset (tree->otick, node); | 970 | itree_inherit_offset (tree->otick, node); |
| 971 | struct itree_node *splice | 971 | struct itree_node *splice |
| 972 | = (node->left == NULL || node->right == NULL) | 972 | = (node->left == NULL || node->right == NULL) |
| 973 | ? node | 973 | ? node |
| 974 | : itree_subtree_min (tree->otick, node->right); | 974 | : itree_subtree_min (tree->otick, node->right); |
| 975 | 975 | ||
| 976 | /* Find `subtree`, the only child of `splice` (may be NULL). Note: | 976 | /* Find 'subtree', the only child of 'splice' (may be NULL). Note: |
| 977 | `subtree` will not be modified other than changing its parent to | 977 | 'subtree' will not be modified other than changing its parent to |
| 978 | `splice`. */ | 978 | 'splice'. */ |
| 979 | eassert (splice->left == NULL || splice->right == NULL); | 979 | eassert (splice->left == NULL || splice->right == NULL); |
| 980 | struct itree_node *subtree | 980 | struct itree_node *subtree |
| 981 | = (splice->left != NULL) ? splice->left : splice->right; | 981 | = (splice->left != NULL) ? splice->left : splice->right; |
| 982 | 982 | ||
| 983 | /* Save a pointer to the parent of where `subtree` will eventually | 983 | /* Save a pointer to the parent of where 'subtree' will eventually |
| 984 | be in `subtree_parent`. */ | 984 | be in 'subtree_parent'. */ |
| 985 | struct itree_node *subtree_parent | 985 | struct itree_node *subtree_parent |
| 986 | = (splice->parent != node) ? splice->parent : splice; | 986 | = (splice->parent != node) ? splice->parent : splice; |
| 987 | 987 | ||
| 988 | /* If `splice` is black removing it may violate Red-Black | 988 | /* If 'splice' is black removing it may violate Red-Black |
| 989 | invariants, so note this for later. */ | 989 | invariants, so note this for later. */ |
| 990 | 990 | ||
| 991 | /* Replace `splice` with `subtree` under subtree's parent. If | 991 | /* Replace 'splice' with 'subtree' under subtree's parent. If |
| 992 | `splice` is black, this creates a red-red violation, so remember | 992 | 'splice' is black, this creates a red-red violation, so remember |
| 993 | this now as the field can be overwritten when splice is | 993 | this now as the field can be overwritten when splice is |
| 994 | transplanted below. */ | 994 | transplanted below. */ |
| 995 | itree_replace_child (tree, subtree, splice); | 995 | itree_replace_child (tree, subtree, splice); |
| 996 | bool removed_black = !splice->red; | 996 | bool removed_black = !splice->red; |
| 997 | 997 | ||
| 998 | /* Replace `node` with `splice` in the tree and propagate limit | 998 | /* Replace 'node' with 'splice' in the tree and propagate limit |
| 999 | upwards, if necessary. Note: Limit propagation can stabilize at | 999 | upwards, if necessary. Note: Limit propagation can stabilize at |
| 1000 | any point, so we must call from bottom to top for every node that | 1000 | any point, so we must call from bottom to top for every node that |
| 1001 | has a new child. */ | 1001 | has a new child. */ |
| @@ -1054,8 +1054,8 @@ itree_insert_gap (struct itree_tree *tree, | |||
| 1054 | 1054 | ||
| 1055 | /* Nodes with front_advance starting at pos may mess up the tree | 1055 | /* Nodes with front_advance starting at pos may mess up the tree |
| 1056 | order, so we need to remove them first. This doesn't apply for | 1056 | order, so we need to remove them first. This doesn't apply for |
| 1057 | `before_markers` since in that case, all positions move identically | 1057 | 'before_markers' since in that case, all positions move identically |
| 1058 | regardless of `front_advance` or `rear_advance`. */ | 1058 | regardless of 'front_advance' or 'rear_advance'. */ |
| 1059 | struct itree_stack *saved = itree_stack_create (0); | 1059 | struct itree_stack *saved = itree_stack_create (0); |
| 1060 | struct itree_node *node = NULL; | 1060 | struct itree_node *node = NULL; |
| 1061 | if (!before_markers) | 1061 | if (!before_markers) |
| @@ -1208,7 +1208,7 @@ itree_node_intersects (const struct itree_node *node, | |||
| 1208 | 1208 | ||
| 1209 | Note that this should return all the nodes that we need to traverse | 1209 | Note that this should return all the nodes that we need to traverse |
| 1210 | in order to traverse the nodes selected by the current narrowing (i.e. | 1210 | in order to traverse the nodes selected by the current narrowing (i.e. |
| 1211 | `ITER->begin..ITER->end`) so it will also return some nodes which aren't in | 1211 | 'ITER->begin..ITER->end') so it will also return some nodes which aren't in |
| 1212 | that narrowing simply because they may have children which are. | 1212 | that narrowing simply because they may have children which are. |
| 1213 | 1213 | ||
| 1214 | The code itself is very unsatisfactory because the code of each one | 1214 | The code itself is very unsatisfactory because the code of each one |
| @@ -1221,8 +1221,8 @@ itree_iter_next_in_subtree (struct itree_node *node, | |||
| 1221 | struct itree_iterator *iter) | 1221 | struct itree_iterator *iter) |
| 1222 | { | 1222 | { |
| 1223 | /* FIXME: Like in the previous version of the iterator, we | 1223 | /* FIXME: Like in the previous version of the iterator, we |
| 1224 | prune based on `limit` only when moving to a left child, | 1224 | prune based on 'limit' only when moving to a left child, |
| 1225 | but `limit` can also get smaller when moving to a right child | 1225 | but 'limit' can also get smaller when moving to a right child |
| 1226 | It's actually fairly common, so maybe it would be worthwhile | 1226 | It's actually fairly common, so maybe it would be worthwhile |
| 1227 | to prune a bit more aggressively here. */ | 1227 | to prune a bit more aggressively here. */ |
| 1228 | struct itree_node *next; | 1228 | struct itree_node *next; |
| @@ -1387,10 +1387,10 @@ itree_iterator_start (struct itree_iterator *iter, | |||
| 1387 | iter->end = end; | 1387 | iter->end = end; |
| 1388 | iter->otick = tree->otick; | 1388 | iter->otick = tree->otick; |
| 1389 | iter->order = order; | 1389 | iter->order = order; |
| 1390 | /* Beware: the `node` field always holds "the next" node to consider. | 1390 | /* Beware: the 'node' field always holds "the next" node to consider. |
| 1391 | so it's always "one node ahead" of what the iterator loop sees. | 1391 | so it's always "one node ahead" of what the iterator loop sees. |
| 1392 | In most respects this makes no difference, but we depend on this | 1392 | In most respects this makes no difference, but we depend on this |
| 1393 | detail in `delete_all_overlays` where this allows us to modify | 1393 | detail in 'delete_all_overlays' where this allows us to modify |
| 1394 | the current node knowing that the iterator will not need it to | 1394 | the current node knowing that the iterator will not need it to |
| 1395 | find the next. */ | 1395 | find the next. */ |
| 1396 | iter->node = itree_iterator_first_node (tree, iter); | 1396 | iter->node = itree_iterator_first_node (tree, iter); |
diff --git a/src/itree.h b/src/itree.h index f54dbd7f07e..23e1105a05d 100644 --- a/src/itree.h +++ b/src/itree.h | |||
| @@ -41,7 +41,7 @@ INLINE_HEADER_BEGIN | |||
| 41 | struct itree_node | 41 | struct itree_node |
| 42 | { | 42 | { |
| 43 | /* The normal parent, left and right links found in binary trees. | 43 | /* The normal parent, left and right links found in binary trees. |
| 44 | See also `red`, below, which completes the Red-Black tree | 44 | See also 'red', below, which completes the Red-Black tree |
| 45 | representation. */ | 45 | representation. */ |
| 46 | struct itree_node *parent; | 46 | struct itree_node *parent; |
| 47 | struct itree_node *left; | 47 | struct itree_node *left; |
| @@ -147,13 +147,13 @@ struct itree_iterator | |||
| 147 | struct itree_node *node; | 147 | struct itree_node *node; |
| 148 | ptrdiff_t begin; | 148 | ptrdiff_t begin; |
| 149 | ptrdiff_t end; | 149 | ptrdiff_t end; |
| 150 | uintmax_t otick; /* A copy of the tree's `otick`. */ | 150 | uintmax_t otick; /* A copy of the tree's 'otick'. */ |
| 151 | enum itree_order order; | 151 | enum itree_order order; |
| 152 | }; | 152 | }; |
| 153 | 153 | ||
| 154 | /* Iterate over the intervals between BEG and END in the tree T. | 154 | /* Iterate over the intervals between BEG and END in the tree T. |
| 155 | N will hold successive nodes. ORDER can be one of : `ASCENDING`, | 155 | N will hold successive nodes. ORDER can be one of : 'ASCENDING', |
| 156 | `DESCENDING`, `POST_ORDER`, or `PRE_ORDER`. | 156 | 'DESCENDING', 'POST_ORDER', or 'PRE_ORDER'. |
| 157 | It should be used as: | 157 | It should be used as: |
| 158 | 158 | ||
| 159 | ITREE_FOREACH (n, t, beg, end, order) | 159 | ITREE_FOREACH (n, t, beg, end, order) |
| @@ -167,12 +167,12 @@ struct itree_iterator | |||
| 167 | - Don't modify the tree during the iteration. | 167 | - Don't modify the tree during the iteration. |
| 168 | */ | 168 | */ |
| 169 | #define ITREE_FOREACH(n, t, beg, end, order) \ | 169 | #define ITREE_FOREACH(n, t, beg, end, order) \ |
| 170 | /* FIXME: We'd want to declare `n` right here, but I can't figure out | 170 | /* FIXME: We'd want to declare 'n' right here, but I can't figure out |
| 171 | how to make that work here: the `for` syntax only allows a single | 171 | how to make that work here: the 'for' syntax only allows a single |
| 172 | clause for the var declarations where we need 2 different types. | 172 | clause for the var declarations where we need 2 different types. |
| 173 | We could use the `struct {foo x; bar y; } p;` trick to declare two | 173 | We could use the 'struct {foo x; bar y; } p;' trick to declare two |
| 174 | vars `p.x` and `p.y` of unrelated types, but then none of the names | 174 | vars 'p.x' and 'p.y' of unrelated types, but then none of the names |
| 175 | of the vars matches the `n` we receive :-(. */ \ | 175 | of the vars matches the 'n' we receive :-(. */ \ |
| 176 | if (!t) \ | 176 | if (!t) \ |
| 177 | { } \ | 177 | { } \ |
| 178 | else \ | 178 | else \ |
diff --git a/src/nsterm.m b/src/nsterm.m index 8862a74f129..47ce20455c5 100644 --- a/src/nsterm.m +++ b/src/nsterm.m | |||
| @@ -7899,6 +7899,9 @@ ns_in_echo_area (void) | |||
| 7899 | 7899 | ||
| 7900 | NSTRACE_RETURN_SIZE (frameSize); | 7900 | NSTRACE_RETURN_SIZE (frameSize); |
| 7901 | 7901 | ||
| 7902 | /* Trigger `move-frame-functions' (Bug#74074). */ | ||
| 7903 | [self windowDidMove:(NSNotification *)sender]; | ||
| 7904 | |||
| 7902 | return frameSize; | 7905 | return frameSize; |
| 7903 | } | 7906 | } |
| 7904 | 7907 | ||
diff --git a/test/lisp/subr-tests.el b/test/lisp/subr-tests.el index 6f28e057342..e12e3c62e0c 100644 --- a/test/lisp/subr-tests.el +++ b/test/lisp/subr-tests.el | |||
| @@ -454,7 +454,11 @@ | |||
| 454 | x))) | 454 | x))) |
| 455 | (should (= x 2))) | 455 | (should (= x 2))) |
| 456 | (should (equal (macroexpand-all '(when a b c d)) | 456 | (should (equal (macroexpand-all '(when a b c d)) |
| 457 | '(if a (progn b c d))))) | 457 | '(if a (progn b c d)))) |
| 458 | (with-suppressed-warnings ((empty-body when unless)) | ||
| 459 | (should (equal (when t) nil)) | ||
| 460 | (should (equal (unless t) nil)) | ||
| 461 | (should (equal (unless nil) nil)))) | ||
| 458 | 462 | ||
| 459 | (ert-deftest subr-test-xor () | 463 | (ert-deftest subr-test-xor () |
| 460 | "Test `xor'." | 464 | "Test `xor'." |