Subject: bug#19622: 25.0.50; Spell checking and Unicode don't mix...

From: "Perry E. Metzger" <[email-masked]>
Date: Sat, 17 Jan 2015 20:55:33 -0500

Say you're using a mode (like typopunct) which automatically inserts
"proper" Unicode close single quote marks while you're typing. You
then would spell "hadn't" as "hadn’t", say.

Say you're also using flyspell mode (or even normal ispell checks).

"hadn’t" will then be flagged as misspelled, mostly because none of
the tools seem to understand that "’" is the same as "'" under the
circumstances.

It would be really handy if the spell checker was happy with either.

In GNU Emacs 25.0.50.1 (x86_64-apple-darwin14.0.0, NS appkit-1343.16
Version 10.10.1 (Build 14B25)) of 2015-01-08 on
jabberwock.cb.piermont.com Repository revision:
5fbd17e369ca30a47ab8a2eda0b2f2ea9b690bb4 Windowing system distributor
`Apple', version 10.3.1343 Configured using:
 `configure --with-ns --without-dbus --without-compress-install'

Configured features:
ACL GNUTLS LIBXML2 ZLIB

Important settings:
  value of $LANG: C
  locale-coding-system: utf-8-unix

Major mode: Info

Minor modes in effect:
  global-hl-line-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t

Recent messages:
Ruby: ruby-2.1.2 Gemset: global
Loading /Users/perry/pkg/emacs/ProofGeneral/generic/proof-site.el
(source)...done For information about GNU Emacs and the GNU system,
type C-h C-a. Starting new Ispell process /opt/local/bin/aspell with
default dictionary... Composing main Info directory...done
Mark saved where search started

Load-path shadows:
/Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-texinfo
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-texinfo /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-publish
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-publish /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-org
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-org /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-odt
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-odt /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-md
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-md /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-man
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-man /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-latex
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-latex /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-icalendar
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-icalendar /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-html
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-html /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-beamer
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-beamer /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ox-ascii
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ox-ascii /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-w3m
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-w3m /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-version
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-version /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-timer
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-timer /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-table
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-table /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-src
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-src /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-rmail
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-rmail /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-protocol
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-protocol /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-plot
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-plot /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-pcomplete
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-pcomplete /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-mouse
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mouse /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-mobile
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mobile /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-mhe
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-mhe /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-macs
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-macs /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-macro
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-macro /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-loaddefs
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-loaddefs /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-list
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-list /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-irc
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-irc /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-install
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-install /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-inlinetask
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-inlinetask /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-info
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-info /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-indent
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-indent /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-id
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-id /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-habit
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-habit /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-gnus
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-gnus /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-footnote
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-footnote /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-feed
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-feed /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-faces
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-faces /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-eshell
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-eshell /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-entities
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-entities /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-element
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-element /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-docview
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-docview /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-datetree
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-datetree /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-ctags
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-ctags /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-crypt
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-crypt /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-compat
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-compat /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-colview
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-colview /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-clock
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-clock /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-capture
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-capture /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-bibtex
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bibtex /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-bbdb
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-bbdb /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-attach
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-attach /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-archive
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-archive /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/org-agenda
hides /Applications/Emacs.app/Contents/Resources/lisp/org/org-agenda /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-tangle
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-tangle /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-table
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-table /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-sqlite
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sqlite /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-sql
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sql /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-shen
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-shen /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-sh
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sh /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-screen
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-screen /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-scheme
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-scheme /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-scala
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-scala /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-sass
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-sass /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-ruby
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ruby /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-ref
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ref /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-R
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-R /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-python
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-python /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-plantuml
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-plantuml /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-picolisp
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-picolisp /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-perl
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-perl /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-org
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-org /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-octave
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-octave /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-ocaml
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ocaml /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-mscgen
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-mscgen /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-maxima
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-maxima /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-matlab
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-matlab /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-makefile
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-makefile /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-lob
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-lob /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-lisp
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-lisp /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-lilypond
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-lilypond /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-ledger
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ledger /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-latex
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-latex /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-keys
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-keys /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-js
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-js /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-java
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-java /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-io
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-io /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-haskell
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-haskell /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-gnuplot
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-gnuplot /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-fortran
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-fortran /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-exp
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-exp /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-eval
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-eval /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-emacs-lisp
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-emacs-lisp /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-dot
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-dot /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-ditaa
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-ditaa /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-css
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-css /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-core
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-core /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-comint
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-comint /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-clojure
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-clojure /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-calc
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-calc /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-C
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-C /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-awk
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-awk /Users/perry/.emacs.d/elpa/org-plus-contrib-20131111/ob-asymptote
hides /Applications/Emacs.app/Contents/Resources/lisp/org/ob-asymptote
~/pkg/emacs/zenirc-example hides
~/pkg/emacs/zenirc-2.112/src/zenirc-example

Features:
(shadow sort gnus-util mail-extr emacsbug message dired format-spec
rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231
mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045 ietf-drums
mm-util help-fns mail-prsvr mail-utils misearch multi-isearch flyspell
ispell proof-site proof-autoloads pg-vars rvm cl-macs cl gv
cl-loaddefs cl-lib typopunct tabbar easy-mmode hl-line info easymenu
package epg-config time-date tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel ns-win tool-bar dnd
fontset image regexp-opt fringe tabulated-list newcomment elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet
lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook
help simple abbrev minibuffer nadvice loaddefs button faces cus-face
macroexp files text-properties overlay sha1 md5 base64 format env
code-pages mule custom widget hashtable-print-readable backquote
make-network-process cocoa ns multi-tty emacs)

Memory information:
((conses 16 131402 5582)
 (symbols 48 21593 0)
 (miscs 40 72 259)
 (strings 32 24622 4611)
 (string-bytes 1 688036)
 (vectors 16 12880)
 (vector-slots 8 412425 2982)
 (floats 8 72 55)
 (intervals 56 3579 15)
 (buffers 976 13))

-- 
Perry E. Metzger		[email-masked]