diff options
| author | Juri Linkov | 2019-03-25 23:32:09 +0200 |
|---|---|---|
| committer | Juri Linkov | 2019-03-25 23:32:09 +0200 |
| commit | 389475dbcc4fb8ac52367e103306a632ef3fd101 (patch) | |
| tree | 2ea141875aa59f25cb10725aca8547629973959a /src | |
| parent | 1f8a6b56a5c4342b1fc3ec1d62b9418656a6f953 (diff) | |
| download | emacs-389475dbcc4fb8ac52367e103306a632ef3fd101.tar.gz emacs-389475dbcc4fb8ac52367e103306a632ef3fd101.zip | |
* lisp/international/mule-cmds.el (ngettext): Move to editfns.c.
* src/editfns.c (Fngettext): Move from mule-cmds.el and use
gettext's ngettext when available.
Diffstat (limited to 'src')
| -rw-r--r-- | src/editfns.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/src/editfns.c b/src/editfns.c index ac9b871835e..ab48cdb6fd1 100644 --- a/src/editfns.c +++ b/src/editfns.c | |||
| @@ -53,6 +53,12 @@ along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */ | |||
| 53 | #include "window.h" | 53 | #include "window.h" |
| 54 | #include "blockinput.h" | 54 | #include "blockinput.h" |
| 55 | 55 | ||
| 56 | #ifdef _LIBC | ||
| 57 | # include <libintl.h> | ||
| 58 | #else | ||
| 59 | # include "gettext.h" | ||
| 60 | #endif | ||
| 61 | |||
| 56 | static void update_buffer_properties (ptrdiff_t, ptrdiff_t); | 62 | static void update_buffer_properties (ptrdiff_t, ptrdiff_t); |
| 57 | static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool); | 63 | static Lisp_Object styled_format (ptrdiff_t, Lisp_Object *, bool); |
| 58 | 64 | ||
| @@ -2836,6 +2842,35 @@ usage: (save-restriction &rest BODY) */) | |||
| 2836 | return unbind_to (count, val); | 2842 | return unbind_to (count, val); |
| 2837 | } | 2843 | } |
| 2838 | 2844 | ||
| 2845 | /* i18n (internationalization). */ | ||
| 2846 | |||
| 2847 | DEFUN ("ngettext", Fngettext, Sngettext, 3, 3, 0, | ||
| 2848 | doc: /* Return the plural form of the translation of the string. | ||
| 2849 | This function is similar to the `gettext' function as it finds the message | ||
| 2850 | catalogs in the same way. But it takes two extra arguments. The MSGID | ||
| 2851 | parameter must contain the singular form of the string to be converted. | ||
| 2852 | It is also used as the key for the search in the catalog. | ||
| 2853 | The MSGID_PLURAL parameter is the plural form. The parameter N is used | ||
| 2854 | to determine the plural form. If no message catalog is found MSGID is | ||
| 2855 | returned if N is equal to 1, otherwise MSGID_PLURAL. */) | ||
| 2856 | (Lisp_Object msgid, Lisp_Object msgid_plural, Lisp_Object n) | ||
| 2857 | { | ||
| 2858 | CHECK_STRING (msgid); | ||
| 2859 | CHECK_STRING (msgid_plural); | ||
| 2860 | CHECK_FIXNUM (n); | ||
| 2861 | |||
| 2862 | #ifdef _LIBGETTEXT_H | ||
| 2863 | return build_string (ngettext (SSDATA (msgid), | ||
| 2864 | SSDATA (msgid_plural), | ||
| 2865 | XFIXNUM (n))); | ||
| 2866 | #else | ||
| 2867 | if (XFIXNUM (n) == 1) | ||
| 2868 | return msgid; | ||
| 2869 | else | ||
| 2870 | return msgid_plural; | ||
| 2871 | #endif | ||
| 2872 | } | ||
| 2873 | |||
| 2839 | DEFUN ("message", Fmessage, Smessage, 1, MANY, 0, | 2874 | DEFUN ("message", Fmessage, Smessage, 1, MANY, 0, |
| 2840 | doc: /* Display a message at the bottom of the screen. | 2875 | doc: /* Display a message at the bottom of the screen. |
| 2841 | The message also goes into the `*Messages*' buffer, if `message-log-max' | 2876 | The message also goes into the `*Messages*' buffer, if `message-log-max' |
| @@ -4554,6 +4589,8 @@ it to be non-nil. */); | |||
| 4554 | defsubr (&Sinsert_char); | 4589 | defsubr (&Sinsert_char); |
| 4555 | defsubr (&Sinsert_byte); | 4590 | defsubr (&Sinsert_byte); |
| 4556 | 4591 | ||
| 4592 | defsubr (&Sngettext); | ||
| 4593 | |||
| 4557 | defsubr (&Suser_login_name); | 4594 | defsubr (&Suser_login_name); |
| 4558 | defsubr (&Sgroup_name); | 4595 | defsubr (&Sgroup_name); |
| 4559 | defsubr (&Suser_real_login_name); | 4596 | defsubr (&Suser_real_login_name); |