all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: martin rudalics <rudalics@gmx.at>
To: Drew Adams <drew.adams@oracle.com>
Cc: perin@panix.com, perin@acm.org, 13041@debbugs.gnu.org
Subject: bug#13041: 24.2; diacritic-fold-search
Date: Wed, 05 Dec 2012 10:42:26 +0100	[thread overview]
Message-ID: <50BF1702.4020100@gmx.at> (raw)
In-Reply-To: <3E2D742BA0FC44B7A61665D85AAC3712@us.oracle.com>

 > 1. Assuming this or similar is added to Emacs (please do).  Please consider
 > modifying it to respect `case-fold-search'.  These modified lines do that.
 >
 > (setq prop1 (get-char-code-property
 >               (if case-fold-search
 >                   (downcase (elt string1 index1))
 >                 (elt string1 index1))
 >               'decomposition))
 >
 > [Same thing for prop2 with string2 and index2.]

This would have to be done, yes.

 > (let ((value (compare-strings compat1 0 nil
 >                               compat2 0 nil case-fold-search)))
 >
 >
 > 2. In addition, consider updating `string-lessp' to be sensitive to a variable
 > such as this:
 >
 > (defvar ignore-diacritics nil
 >   "Non-nil means ignore diacritics for string comparisons.")
 >
 > With that, an alternative to hard-coding a call to `decomposed-string-lessp' is
 > to bind `ignore-diacritics' and use `string-lessp'.

`ignore-diacritics' is misleading.  The variable would have to be called
`observe-decompositions' or something the like.

 > A similar change could be made for `compare-strings': reflect the value of
 > `ignore-diacritics'.  Or since that function has made the choice to pass
 > case-sensitivity as a parameter instead of respecting `case-fold-search', pass
 > another parameter for diacritic sensitivity.

Indeed, `string-lessp' is too weak - we'd need a function to tell
whether two strings are equal disregarding "certain" decomposition
properties.

 > 3. More general than #2 would be a function like this, which is sensitive to
 > both `ignore-diacritics' and `case-fold-search' (this assumes the change
 > suggested above in #1 for `decomposed-string-lessp').
 >
 > (defun my-string-lessp (s1 s2)
 >   "..."
 >   (if ignore-diacritics
 >       (decomposed-string-lessp s1 s2)
 >     (when case-fold-search (setq s1  (upcase s1)
 >                                  s2  (upcase s2)))
 >     (string-lessp s1 s2)))
 >
 > Dunno a good name for this.  It's too late to let `string-lessp' itself act like
 > this - that would break stuff.

`string-lessp' is in C.  I wouldn't touch it anyway.

 > 4. Even better than hard-coding `case-fold-search' in `my-string-less-p' and
 > `decomposed-string-lessp' would be to have those functions be sensitive to a
 > variable such as this:
 >
 > (defvar string-case-variable 'case-fold-search
 >   "Value is a case-sensitivity variable such as `case-fold-search'.
 > The values of that variable must be like those for `case-fold-search':
 > nil means case-sensitive, non-nil means case-insensitive.")
 >
 > Code could then bind `string-case-variable' to, say, `(not
 > completion-ignore-case)' or to any other case-sensitivity controlling sexp, when
 > appropriate.
 >
 > This would have the advantages offered by passing an explicit case-sensitivity
 > parameter, as in `compare-strings', but also the advantages of dynamic scope:
 > binding `string-case-var' to affect all comparisons within scope.
 >
 > Comparers such as `(my-)string-lessp' are often used as arguments to
 > higher-order functions that treat them as (only) binary predicates, i.e.,
 > predicates where any additional parameters specifying case or diacritic
 > sensitivity are ignored.

I first have to solve the problems with the values returned by
`get-char-code-property'.  Then I will look into this.

martin





  parent reply	other threads:[~2012-12-05  9:42 UTC|newest]

Thread overview: 83+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-11-30 18:22 bug#13041: 24.2; diacritic-fold-search Lewis Perin
2012-11-30 18:51 ` Juri Linkov
2012-11-30 21:07   ` Lewis Perin
2012-12-01  0:27     ` Juri Linkov
2012-12-01  0:47       ` Drew Adams
2012-12-01  0:49         ` Drew Adams
2012-12-01  1:20           ` Lew Perin
2012-12-01  6:50             ` Drew Adams
2012-12-01  8:32       ` Eli Zaretskii
2012-12-01  9:09         ` Eli Zaretskii
2012-12-01 16:38         ` Drew Adams
2012-12-02  0:27         ` Juri Linkov
2012-12-02 17:45           ` martin rudalics
2012-12-02 18:02             ` Eli Zaretskii
2012-12-03 10:16               ` martin rudalics
2012-12-03 16:47                 ` Eli Zaretskii
2012-12-03 17:42                   ` martin rudalics
2012-12-03 17:59                     ` Eli Zaretskii
2012-12-04 17:54                       ` martin rudalics
2012-12-04 19:28                         ` Eli Zaretskii
2012-12-05  9:41                           ` martin rudalics
2012-12-05 16:37                             ` Eli Zaretskii
2012-12-06 10:31                               ` martin rudalics
2012-12-06 17:48                                 ` Eli Zaretskii
2012-12-05 23:05                             ` Juri Linkov
2012-12-06 10:32                               ` martin rudalics
2012-12-04 20:12                         ` Drew Adams
2012-12-04 23:15                           ` Drew Adams
2012-12-05  6:50                             ` Drew Adams
2012-12-05  9:42                               ` martin rudalics
2012-12-05 15:38                                 ` Drew Adams
2012-12-06  9:25                               ` Kenichi Handa
2012-12-06 10:34                                 ` martin rudalics
2012-12-06 17:50                                   ` Eli Zaretskii
2012-12-07  0:58                                 ` Juri Linkov
2012-12-07  6:33                                   ` Eli Zaretskii
2012-12-07 10:37                                   ` martin rudalics
2012-12-07 23:55                                     ` Juri Linkov
2012-12-08  8:20                                       ` Eli Zaretskii
2012-12-08 11:35                                         ` martin rudalics
2012-12-08 12:40                                           ` Eli Zaretskii
2012-12-08 11:21                                       ` martin rudalics
2012-12-08 23:07                                         ` Juri Linkov
2012-12-09  0:04                                           ` Drew Adams
2012-12-09 17:52                                           ` martin rudalics
2012-12-09 18:06                                             ` Drew Adams
2012-12-11  7:19                                               ` Eli Zaretskii
2012-12-08 23:54                                       ` Stefan Monnier
2012-12-09  0:14                                         ` Drew Adams
2012-12-09 15:42                                           ` Stefan Monnier
2012-12-09 18:00                                             ` Drew Adams
2012-12-09  0:35                                         ` Juri Linkov
2012-12-09 11:35                                           ` Stephen Berman
2012-12-09 17:52                                             ` martin rudalics
2012-12-09 15:45                                           ` Stefan Monnier
2012-12-10  7:57                                             ` Juri Linkov
2012-12-10  8:20                                               ` Eli Zaretskii
2012-12-05  9:42                             ` martin rudalics
2012-12-05  9:42                           ` martin rudalics [this message]
2012-12-05 15:38                             ` Drew Adams
2012-12-05 15:51                               ` Lewis Perin
2012-12-05 16:20                                 ` Drew Adams
2012-12-05 17:16                               ` Drew Adams
2012-12-05 18:00                                 ` Drew Adams
2012-12-05 18:27                                   ` Eli Zaretskii
2012-12-06 10:31                                   ` martin rudalics
2012-12-06 15:59                                     ` Drew Adams
2012-12-06 10:28                               ` martin rudalics
2012-12-06 17:53                                 ` Eli Zaretskii
2012-12-05 23:04                             ` Juri Linkov
2012-12-06 10:31                               ` martin rudalics
2012-12-07  0:52                                 ` Juri Linkov
2012-12-02 21:39             ` Juri Linkov
2012-12-03 10:16               ` martin rudalics
2012-12-04  0:17                 ` Juri Linkov
2012-12-04  3:41                   ` Eli Zaretskii
2012-12-02 18:16           ` Eli Zaretskii
2012-12-02 21:31             ` Juri Linkov
2012-12-05 19:17             ` Drew Adams
2012-12-05 21:19               ` Eli Zaretskii
2012-11-30 19:31 ` Stefan Monnier
2016-08-31 14:45 ` Michael Albinus
     [not found]   ` <22473.57245.883865.68491@panix5.panix.com>
2016-09-03  7:06     ` Michael Albinus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=50BF1702.4020100@gmx.at \
    --to=rudalics@gmx.at \
    --cc=13041@debbugs.gnu.org \
    --cc=drew.adams@oracle.com \
    --cc=perin@acm.org \
    --cc=perin@panix.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.