From 6f65e6a60449f1e4884987ee3d56199a46fdb82c Mon Sep 17 00:00:00 2001 From: Daniel Mendler Date: Tue, 1 Aug 2023 17:45:17 +0200 Subject: compat-29: Add bidi-string-strip-control-characters --- NEWS.org | 1 + compat-29.el | 8 ++++++++ compat-tests.el | 6 ++++++ compat.texi | 7 ++++++- 4 files changed, 21 insertions(+), 1 deletion(-) diff --git a/NEWS.org b/NEWS.org index 7e41ec1..edf39af 100644 --- a/NEWS.org +++ b/NEWS.org @@ -4,6 +4,7 @@ * Development +- compat-29: Add function =bidi-string-strip-control-characters=. - compat-29: Add function =char-uppercase-p=. - compat-29: Add function =window-configuration-equal-p=. diff --git a/compat-29.el b/compat-29.el index 3db94c9..28e9105 100644 --- a/compat-29.el +++ b/compat-29.el @@ -508,6 +508,14 @@ thus overriding the value of the TIMEOUT argument to that function.") (when message (message "%s" message)) exitfun)) +;;;; Defined in characters.el + +(compat-defun bidi-string-strip-control-characters (string) ;; + "Strip bidi control characters from STRING and return the result." + (apply #'string (seq-filter (lambda (char) + (not (memq char bidi-control-characters))) + string))) + ;;;; Defined in simple.el (compat-defun char-uppercase-p (char) ;; diff --git a/compat-tests.el b/compat-tests.el index 02fa536..19c13ed 100644 --- a/compat-tests.el +++ b/compat-tests.el @@ -1843,6 +1843,12 @@ (dolist (c (list ?a ?b ?α ?β)) (should-not (char-uppercase-p c)))) +(ert-deftest compat-bidi-string-strip-control-characters () + (should-equal (bidi-string-strip-control-characters (apply #'string bidi-control-characters)) "") + (should-equal (bidi-string-strip-control-characters "\x202e") "") + (should-equal (bidi-string-strip-control-characters "abc") "abc") + (should-equal (bidi-string-strip-control-characters "x\x202ey\x202ez") "xyz")) + (ert-deftest compat-string-split () (should-equal '("a" "b" "c") (split-string "a b c")) (should-equal '("a" "b" "c") (string-split "a b c"))) diff --git a/compat.texi b/compat.texi index 1c9e278..4ec60a9 100644 --- a/compat.texi +++ b/compat.texi @@ -2613,6 +2613,11 @@ The name follows the convention of other string functions. @xref{Creating Strings,,,elisp}. @end defun +@c based on lisp/international/characters.el +@defun bidi-string-strip-control-characters string +Strip bidi control characters from @var{string} and return the result. +@end defun + @c copied from lispref/buffers.texi @defun buffer-match-p condition buffer-or-name &optional arg This function checks if a buffer designated by @code{buffer-or-name} @@ -2914,7 +2919,7 @@ local map. @xref{Key Binding Commands,,,elisp}. @end defun -@c based on from lisp/keymap.el +@c based on lisp/keymap.el @defun keymap-substitute keymap olddef newdef &optional oldmap prefix Replace @var{olddef} with @var{newdef} for any keys in @var{keymap} now defined as @var{olddef}. In other words, @var{olddef} is replaced -- cgit v1.0