diff --git a/etc/NEWS b/etc/NEWS index 8f877f40ac9..3065fa85d3b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -824,6 +824,7 @@ corresponding language environments are: **** Tagbanwa script and language environment **** Limbu script and language environment **** Balinese script and language environment +**** Javanese script and language environment --- *** The "Oriya" language environment was renamed to "Odia". diff --git a/lisp/avoid.el b/lisp/avoid.el index c97e51a6f7d..2e77c8feff1 100644 --- a/lisp/avoid.el +++ b/lisp/avoid.el @@ -293,6 +293,8 @@ accumulated, and tries to keep it close to zero." (mouse-avoidance-set-mouse-position (cons (+ (car (cdr cur)) deltax) (+ (cdr (cdr cur)) deltay)))))) +(defvar x-pointer-invisible) ; silence byte-compiler + (defun mouse-avoidance-random-shape () "Return a random cursor shape. This assumes that any variable whose name begins with x-pointer- and diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index a7d7109c8d5..6b511256298 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -203,7 +203,7 @@ (han #x5B57) (yi #xA288) (syloti-nagri #xA807 #xA823 #xA82C) - (javanese #xA980) + (javanese #xA98F #xA9B4 #xA9CA) (cham #xAA00) (tai-viet #xAA80) (hangul #xAC00) diff --git a/lisp/language/indonesian.el b/lisp/language/indonesian.el index 9a86135d89b..994be2484a7 100644 --- a/lisp/language/indonesian.el +++ b/lisp/language/indonesian.el @@ -36,6 +36,15 @@ (documentation . "\ Balinese language and its script are supported in this language environment."))) +(set-language-info-alist + "Javanese" '((charset unicode) + (coding-system utf-8) + (coding-priority utf-8) + (input-method . "javanese") + (sample-text . "Javanese (ꦲꦏ꧀ꦱꦫꦗꦮ) ꦲꦭꦺꦴ") + (documentation . "\ +Javanese language and its script are supported in this language environment."))) + ;; Balinese composition rules (let ((consonant "[\x1B13-\x1B33\x1B45-\x1B4B]") @@ -59,6 +68,27 @@ Balinese language and its script are supported in this language environment."))) vowel "?" modifier-above "?" musical-symbol "?") 1 'font-shape-gstring)))) +;; Javanese composition rules +(let ((consonant "[\xA98F-\xA9B2]") + (independent-vowel "[\xA984-\xA98E]") + (telu "\xA9B3") + (vowel "[\xA9B4-\xA9BC]") + (dependant-consonant "[\xA9BD-\xA9BF]") + (modifier-above "[\xA980-\xA983]") + (pangkon "\xA9C0")) + (set-char-table-range composition-function-table + '(#xA9B3 . #xA9C0) + (list (vector + ;; Consonant based syllables + (concat consonant telu "?" "\\(?:" pangkon consonant + telu "?\\)*\\(?:" pangkon "\\|" vowel "*" telu + "?" modifier-above "?" dependant-consonant "?\\)") + 1 'font-shape-gstring) + (vector + ;; Vowels based syllables + (concat independent-vowel telu "?" pangkon "?" + vowel "?" modifier-above "?" dependant-consonant "?") + 1 'font-shape-gstring)))) (provide 'indonesian) ;;; indonesian.el ends here diff --git a/lisp/leim/quail/indonesian.el b/lisp/leim/quail/indonesian.el index 46dafc89f52..82d0a2c2694 100644 --- a/lisp/leim/quail/indonesian.el +++ b/lisp/leim/quail/indonesian.el @@ -173,5 +173,118 @@ ("`m" ?ᬁ) ("`M" ?ᬀ)) +(quail-define-package + "javanese" "Javanese" "ꦄ" t "Javanese phonetic input method. + + `\\=`' is used to switch levels instead of Alt-Gr. +" nil t t t t nil nil nil nil nil t) + +(quail-define-rules + ("1" ?꧑) + ("`1" ?1) + ("`!" ?꧁) + ("2" ?꧒) + ("`2" ?2) + ("`@" ?꧂) + ("3" ?꧓) + ("`3" ?3) + ("`#" ?꧃) + ("4" ?꧔) + ("`4" ?4) + ("`$" ?꧄) + ("5" ?꧕) + ("`5" ?5) + ("`%" ?꧅) + ("6" ?꧖) + ("`6" ?6) + ("`^" ?꧆) + ("7" ?꧗) + ("`7" ?7) + ("`&" ?꧇) + ("8" ?꧘) + ("`8" ?8) + ("`*" ?꧈) + ("9" ?꧙) + ("`9" ?9) + ("`\(" ?꧉) + ("0" ?꧐) + ("`0" ?0) + ("`\)" ?꧞) + ("`\\" ?꧊) + ("`|" ?꧋) + ("`" ?ꦛ) + ("q" ?ꦛ) + ("Q" ?ꦜ) + ("`q" ?꧟) + ("`Q" ?ꧏ) + ("w" ?ꦝ) + ("W" ?ꦞ) + ("`w" ?꧌) + ("`W" ?꧍) + ("e" ?ꦺ) + ("E" ?ꦻ) + ("`e" ?ꦌ) + ("`E" ?ꦍ) + ("r" ?ꦫ) + ("R" ?ꦬ) + ("`r" ?ꦿ) + ("`R" ?ꦂ) + ("t" ?ꦠ) + ("T" ?ꦡ) + ("`t" ?ꦼ) + ("y" ?ꦪ) + ("Y" ?ꦾ) + ("u" ?ꦸ) + ("U" ?ꦹ) + ("`u" ?ꦈ) + ("`U" ?ꦅ) + ("i" ?ꦶ) + ("I" ?ꦷ) + ("`i" ?ꦆ) + ("`I" ?ꦇ) + ("o" ?ꦎ) + ("p" ?ꦥ) + ("P" ?ꦦ) + ("`p" ?ꦉ) + ("a" ?ꦴ) + ("A" ?ꦄ) + ("`a" ?ꦵ) + ("s" ?ꦱ) + ("S" ?ꦯ) + ("d" ?ꦢ) + ("D" ?ꦣ) + ("f" ?꧀) + ("F" ?ꦽ) + ("`f" ?ꦉ) + ("g" ?ꦒ) + ("G" ?ꦓ) + ("h" ?ꦲ) + ("H" ?ꦃ) + ("j" ?ꦗ) + ("J" ?ꦙ) + ("`j" ?ꦘ) + ("k" ?ꦏ) + ("K" ?ꦑ) + ("`k" ?ꦐ) + ("l" ?ꦭ) + ("L" ?ꦊ) + ("`l" ?ꦋ) + ("z" ?ꦚ) + ("Z" ?ꦔ) + ("x" ?ꦰ) + ("X" ?꦳) + ("c" ?ꦕ) + ("C" ?ꦖ) + ("`c" #x200C) ; ZWNJ + ("v" ?ꦮ) + ("V" ?ᭉ) + ("b" ?ꦧ) + ("B" ?ꦨ) + ("n" ?ꦤ) + ("N" ?ꦟ) + ("m" ?ꦩ) + ("M" ?ꦁ) + ("`m" ?ꦀ)) + (provide 'indonesian) ;;; indonesian.el ends here diff --git a/lisp/progmodes/asm-mode.el b/lisp/progmodes/asm-mode.el index 370fb1b80b4..aaf063b5174 100644 --- a/lisp/progmodes/asm-mode.el +++ b/lisp/progmodes/asm-mode.el @@ -24,16 +24,16 @@ ;;; Commentary: ;; This mode was written by Eric S. Raymond , -;; inspired by an earlier asm-mode by Martin Neitzel. +;; inspired by an earlier `asm-mode' by Martin Neitzel. -;; This major mode is based on prog mode. It defines a private abbrev table -;; that can be used to save abbrevs for assembler mnemonics. It binds just -;; five keys: +;; This major mode is based on `prog-mode'. It defines a private +;; abbrev table that can be used to save abbrevs for assembler +;; mnemonics. It binds just five keys: ;; ;; TAB tab to next tab stop ;; : outdent preceding label, tab to tab stop ;; comment char place or move comment -;; asm-comment-char specifies which character this is; +;; `asm-comment-char' specifies which character this is; ;; you can use a different character in different ;; Asm mode buffers. ;; C-j, C-m newline and tab to tab stop @@ -41,9 +41,9 @@ ;; Code is indented to the first tab stop level. ;; This mode runs two hooks: -;; 1) An asm-mode-set-comment-hook before the part of the initialization -;; depending on asm-comment-char, and -;; 2) an asm-mode-hook at the end of initialization. +;; 1) `asm-mode-set-comment-hook' before the part of the initialization +;; depending on `asm-comment-char', and +;; 2) `asm-mode-hook' at the end of initialization. ;;; Code: @@ -68,13 +68,11 @@ "Abbrev table used while in Asm mode.") (define-abbrev-table 'asm-mode-abbrev-table ()) -(defvar asm-mode-map - (let ((map (make-sparse-keymap))) - ;; Note that the comment character isn't set up until asm-mode is called. - (define-key map ":" 'asm-colon) - (define-key map "\C-c;" 'comment-region) - map) - "Keymap for Asm mode.") +(defvar-keymap asm-mode-map + :doc "Keymap for Asm mode." + ;; Note that the comment character isn't set up until asm-mode is called. + ":" #'asm-colon + "C-c ;" #'comment-region) (easy-menu-define asm-mode-menu asm-mode-map "Menu for Asm mode." @@ -130,7 +128,7 @@ Special commands: (setq-local tab-always-indent nil) (run-hooks 'asm-mode-set-comment-hook) - ;; Make our own local child of asm-mode-map + ;; Make our own local child of `asm-mode-map' ;; so we can define our own comment character. (use-local-map (nconc (make-sparse-keymap) asm-mode-map)) (local-set-key (vector asm-comment-char) #'asm-comment) diff --git a/lisp/progmodes/bug-reference.el b/lisp/progmodes/bug-reference.el index 06242a4cba8..d3626dbaf01 100644 --- a/lisp/progmodes/bug-reference.el +++ b/lisp/progmodes/bug-reference.el @@ -40,12 +40,10 @@ ;; Somewhat arbitrary, by analogy with eg goto-address. :group 'comm) -(defvar bug-reference-map - (let ((map (make-sparse-keymap))) - (define-key map [mouse-2] 'bug-reference-push-button) - (define-key map (kbd "C-c RET") 'bug-reference-push-button) - map) - "Keymap used by bug reference buttons.") +(defvar-keymap bug-reference-map + :doc "Keymap used by bug reference buttons." + "" #'bug-reference-push-button + "C-c RET" #'bug-reference-push-button) ;; E.g., "https://gcc.gnu.org/PR%s" (defvar bug-reference-url-format nil diff --git a/lisp/progmodes/erts-mode.el b/lisp/progmodes/erts-mode.el index 1b88540ff38..13da1d478d6 100644 --- a/lisp/progmodes/erts-mode.el +++ b/lisp/progmodes/erts-mode.el @@ -64,12 +64,10 @@ "Face used for displaying specification test start markers." :group 'erts-mode) -(defvar erts-mode-map - (let ((map (make-keymap))) - (set-keymap-parent map prog-mode-map) - (define-key map "\C-c\C-r" 'erts-tag-region) - (define-key map "\C-c\C-c" 'erts-run-test) - map)) +(defvar-keymap erts-mode-map + :parent prog-mode-map + "C-c C-r" #'erts-tag-region + "C-c C-c" #'erts-run-test) (defvar erts-mode-font-lock-keywords ;; Specifications. diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el index 0b7958e52fb..9e3255874da 100644 --- a/lisp/progmodes/flymake.el +++ b/lisp/progmodes/flymake.el @@ -1080,9 +1080,8 @@ Interactively, with a prefix arg, FORCE is t." (flymake--run-backend backend backend-args))) nil)))))))) -(defvar flymake-mode-map - (let ((map (make-sparse-keymap))) map) - "Keymap for `flymake-mode'.") +(defvar-keymap flymake-mode-map + :doc "Keymap for `flymake-mode'.") ;;;###autoload (define-minor-mode flymake-mode @@ -1493,11 +1492,9 @@ TYPE is usually keyword `:error', `:warning' or `:note'." (defvar-local flymake--diagnostics-buffer-source nil) -(defvar flymake-diagnostics-buffer-mode-map - (let ((map (make-sparse-keymap))) - (define-key map (kbd "RET") 'flymake-goto-diagnostic) - (define-key map (kbd "SPC") 'flymake-show-diagnostic) - map)) +(defvar-keymap flymake-diagnostics-buffer-mode-map + "RET" #'flymake-goto-diagnostic + "SPC" #'flymake-show-diagnostic) (defun flymake-show-diagnostic (pos &optional other-window) "Show location of diagnostic at POS." diff --git a/lisp/progmodes/icon.el b/lisp/progmodes/icon.el index e1ee9efc54b..ec281f3a496 100644 --- a/lisp/progmodes/icon.el +++ b/lisp/progmodes/icon.el @@ -31,17 +31,16 @@ "Abbrev table in use in Icon-mode buffers.") (define-abbrev-table 'icon-mode-abbrev-table ()) -(defvar icon-mode-map - (let ((map (make-sparse-keymap "Icon"))) - (define-key map "{" 'electric-icon-brace) - (define-key map "}" 'electric-icon-brace) - (define-key map "\e\C-h" 'mark-icon-function) - (define-key map "\e\C-a" 'beginning-of-icon-defun) - (define-key map "\e\C-e" 'end-of-icon-defun) - (define-key map "\e\C-q" 'indent-icon-exp) - (define-key map "\177" 'backward-delete-char-untabify) - map) - "Keymap used in Icon mode.") +(defvar-keymap icon-mode-map + :doc "Keymap used in Icon mode." + :name "Icon" + "{" #'electric-icon-brace + "}" #'electric-icon-brace + "C-M-h" #'mark-icon-function + "C-M-a" #'beginning-of-icon-defun + "C-M-e" #'end-of-icon-defun + "C-M-q" #'indent-icon-exp + "DEL" #'backward-delete-char-untabify) (easy-menu-define icon-mode-menu icon-mode-map "Menu for Icon mode." diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index 9c1358e466d..eb2a1e4fccc 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -660,13 +660,11 @@ This variable is like `sgml-attribute-offset'." :type 'integer :safe 'integerp) -;;; KeyMap +;;; Keymap -(defvar js-mode-map - (let ((keymap (make-sparse-keymap))) - (define-key keymap [(meta ?.)] #'js-find-symbol) - keymap) - "Keymap for `js-mode'.") +(defvar-keymap js-mode-map + :doc "Keymap for `js-mode'." + "M-." #'js-find-symbol) ;;; Syntax table and parsing diff --git a/lisp/progmodes/m4-mode.el b/lisp/progmodes/m4-mode.el index b9fcd033bbb..a18c8bcce44 100644 --- a/lisp/progmodes/m4-mode.el +++ b/lisp/progmodes/m4-mode.el @@ -121,13 +121,11 @@ If m4 is not in your PATH, set this to an absolute file name." ("#" (0 (when (m4--quoted-p (match-beginning 0)) (string-to-syntax ".")))))) -(defvar m4-mode-map - (let ((map (make-sparse-keymap))) - (define-key map "\C-c\C-b" 'm4-m4-buffer) - (define-key map "\C-c\C-r" 'm4-m4-region) - (define-key map "\C-c\C-c" 'comment-region) - map) - "Keymap for M4 Mode.") +(defvar-keymap m4-mode-map + :doc "Keymap for M4 Mode." + "C-c C-b" #'m4-m4-buffer + "C-c C-r" #'m4-m4-region + "C-c C-c" #'comment-region) (easy-menu-define m4-mode-menu m4-mode-map "Menu for M4 Mode." diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el index 97a218fcfa3..9d1ceaa55a8 100644 --- a/lisp/progmodes/mixal-mode.el +++ b/lisp/progmodes/mixal-mode.el @@ -78,16 +78,13 @@ ;;; Code: (defvar compile-command) -;;; Key map -(defvar mixal-mode-map - (let ((map (make-sparse-keymap))) - (define-key map "\C-c\C-c" 'compile) - (define-key map "\C-c\C-r" 'mixal-run) - (define-key map "\C-c\C-d" 'mixal-debug) - (define-key map "\C-h\C-o" 'mixal-describe-operation-code) - map) - "Keymap for `mixal-mode'.") -;; (makunbound 'mixal-mode-map) +;;; Keymap +(defvar-keymap mixal-mode-map + :doc "Keymap for `mixal-mode'." + "C-c C-c" #'compile + "C-c C-r" #'mixal-run + "C-c C-d" #'mixal-debug + "C-h C-o" #'mixal-describe-operation-code) ;;; Syntax table (defvar mixal-mode-syntax-table diff --git a/lisp/progmodes/scheme.el b/lisp/progmodes/scheme.el index cd397733d2d..cf1d3949835 100644 --- a/lisp/progmodes/scheme.el +++ b/lisp/progmodes/scheme.el @@ -1,7 +1,6 @@ ;;; scheme.el --- Scheme (and DSSSL) editing mode -*- lexical-binding: t; -*- -;; Copyright (C) 1986-1988, 1997-1998, 2001-2022 Free Software -;; Foundation, Inc. +;; Copyright (C) 1986-2022 Free Software Foundation, Inc. ;; Author: Bill Rozas ;; Adapted-by: Dave Love @@ -201,12 +200,10 @@ (defvar scheme-mode-line-process "") -(defvar scheme-mode-map - (let ((map (make-sparse-keymap))) - (set-keymap-parent map lisp-mode-shared-map) - map) - "Keymap for Scheme mode. -All commands in `lisp-mode-shared-map' are inherited by this map.") +(defvar-keymap scheme-mode-map + :doc "Keymap for Scheme mode. +All commands in `lisp-mode-shared-map' are inherited by this map." + :parent lisp-mode-shared-map) (easy-menu-define scheme-mode-menu scheme-mode-map "Menu for Scheme mode."