Subject: bug#15151

From: Sergei Gluschenko <[email-masked]>
Date: Sun, 3 Nov 2013 21:07:34 +0700

HI

I have very similar issue with my custom defined keyboard layout. Here it is

;;========================================================

(quail-define-package
 "russian-no-windows" "Russian" "RU" nil
 "ЙЦУКЕН Russian computer layout"
 nil t t t t nil nil nil nil nil t)

;;  1! 2" 3№ 4% 5: 6, 7. 8; 9( 0) -_ =+ \/ ёЁ
;;   Й  Ц  У  К  Е  Н  Г  Ш  Щ  З  Х  Ъ
;;    Ф  Ы  В  А  П  Р  О  Л  Д  Ж  Э
;;     Я  Ч  С  М  И  Т  Ь  Б  Ю  /?

(quail-define-rules
 ("1" ?1)
 ("2" ?2)
 ("3" ?3)
 ("4" ?4)
 ("5" ?5)
 ("6" ?6)
 ("7" ?7)
 ("8" ?8)
 ("9" ?9)
 ("0" ?0)
 ("-" ?-)
 ("=" ?=)
 ("|" ?Ё)
 ("`" ?])
 ("q" ?й)
 ("w" ?ц)
 ("e" ?у)
 ("r" ?к)
 ("t" ?е)
 ("y" ?н)
 ("u" ?г)
 ("i" ?ш)
 ("o" ?щ)
 ("p" ?з)
 ("[" ?х)
 ("]" ?ъ)
 ("a" ?ф)
 ("s" ?ы)
 ("d" ?в)
 ("f" ?а)
 ("g" ?п)
 ("h" ?р)
 ("j" ?о)
 ("k" ?л)
 ("l" ?д)
 (";" ?ж)
 ("'" ?э)
 ("\\" ?\ё)
 ("z" ?я)
 ("x" ?ч)
 ("c" ?с)
 ("v" ?м)
 ("b" ?и)
 ("n" ?т)
 ("m" ?ь)
 ("," ?б)
 ("." ?ю)
 ("/" ?/)
 ("!" ?!)
 ("@" ?\")
 ("#" ?№)
 ("$" ?\%)
 ("%" ?:)
 ("^" ?,)
 ("&" ?.)
 ("*" ?\;)
 ("(" ?()
 (")" ?))
 ("_" ?_)
 ("+" ?+)
 ("~" ?[)
 ("Q" ?Й)
 ("W" ?Ц)
 ("E" ?У)
 ("R" ?К)
 ("T" ?Е)
 ("Y" ?Н)
 ("U" ?Г)
 ("I" ?Ш)
 ("O" ?Щ)
 ("P" ?З)
 ("{" ?Х)
 ("}" ?Ъ)
 ("A" ?Ф)
 ("S" ?Ы)
 ("D" ?В)
 ("F" ?А)
 ("G" ?П)
 ("H" ?Р)
 ("J" ?О)
 ("K" ?Л)
 ("L" ?Д)
 (":" ?Ж)
 ("\"" ?Э)
 ("|" ?Ё)
 ("Z" ?Я)
 ("X" ?Ч)
 ("C" ?С)
 ("V" ?М)
 ("B" ?И)
 ("N" ?Т)
 ("M" ?Ь)
 ("<" ?Б)
 (">" ?Ю)
 ("?" ??)
 ("§" ?<)
 ("±" ?>)
)

(global-set-key (kbd "M-2") '(lambda() (interactive) (insert "@")))
(global-set-key (kbd "M-3") '(lambda() (interactive) (insert "#")))
(global-set-key (kbd "M-4") '(lambda() (interactive) (insert "$")))
(global-set-key (kbd "M-5") '(lambda() (interactive) (insert "%")))
(global-set-key (kbd "M-6") '(lambda() (interactive) (insert "^")))
(global-set-key (kbd "M-7") '(lambda() (interactive) (insert "&")))
(global-set-key (kbd "M-8") '(lambda() (interactive) (insert "*")))
(global-set-key (kbd "M--") '(lambda() (interactive) (insert "—")))

;; Local Variables:
;; coding: utf-8
;; End:

;;; russian-nowinkeys.el ends here
(provide 'russian-no-windows)

;;========================================================

Here is my flyspell rules:

(add-to-list
 'ispell-local-dictionary-alist
 '("russian"       ; combo english+russian

 "[a-zA-ZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"

 "[^a-zA-ZАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдеёжзийклмнопрстуфхцчшщьыъэюя]"
   "[-']"
   nil
   ("-d" "en_US,ru_RU")
   nil utf-8))

When flyspell mode is turned off everything works OK, but with flyspell
turned on I get strange behavior of "," and "." symbols which are mapped to
"^" and "&" (which are Shift+6 and shift+7. Usually I want type "," at the
end of the word and it doesn't work. "б" typed instead. But when I type
shift+6 in the beginning of the word, I am getting ",", but any subsequent
shift+6 gives me "б" again.

What I want:
Здравствуйте, товарищ!

What I got:
Здравствуйтеб товарищ!

I believe it related to fact that I have rules "^" -> "," and "," -> "б",
but on emacs 24.3 everything worked just fine and still working without
flyspell.

Thanks in advance,
Sergei