summaryrefslogtreecommitdiff
path: root/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el
diff options
context:
space:
mode:
Diffstat (limited to 'language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el')
-rw-r--r--language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el102
1 files changed, 102 insertions, 0 deletions
diff --git a/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el b/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el
new file mode 100644
index 0000000000..4903f300de
--- /dev/null
+++ b/language/chinese/CJK/cjk-4.8.5/utils/lisp/cjkspace.el
@@ -0,0 +1,102 @@
+;;; cjkspace.el --- provide a tilde character if you type a space.
+;;; use this file with AUCTeX.
+
+;; Copyright (C) 1994-2021 Werner Lemberg <wl@gnu.org>
+;;
+;; This program is free software; you can redistribute it and/or modify
+;; it under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 2 of the License, or
+;; (at your option) any later version.
+;;
+;; This program is distributed in the hope that it will be useful,
+;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;; GNU General Public License for more details.
+;;
+;; You should have received a copy of the GNU General Public License
+;; along with this program in doc/COPYING; if not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
+;; MA 02110-1301 USA
+
+;; This file is part of the CJK package Version 4.8.5 (16-Oct-2021)
+
+;; Insert tilde characters instead of spaces for LaTeX CJK documents.
+;; If `CJK-space-after-space' is non-nil, typing a space yields a space.
+;; Typing two consecutive spaces yields a tilde. If `CJK-space-after-space'
+;; is nil, the behaviour is reversed.
+;;
+;; You should put the following in your .emacs file (additionally to the
+;; common AUCTeX adaptations):
+;;
+;; (autoload 'CJK-insert-space "cjkspace"
+;; "Insert tildes appropriately in CJK document." t)
+;; (defun my-LaTeX-mode-hook ()
+;; "Key definitions for LaTeX mode."
+;; (define-key LaTeX-mode-map " " 'CJK-insert-space)
+;; )
+;; (add-hook 'LaTeX-mode-hook 'my-LaTeX-mode-hook)
+
+
+;;; Code:
+
+(provide 'cjkspace)
+
+
+(defvar CJK-space "~")
+
+(defvar CJK-space-after-space nil
+
+ "*If non-nil, typing a space yields a space. Typing two consecutive
+spaces yields a tilde. If nil the behaviour is reversed.")
+
+(make-variable-buffer-local 'CJK-space-after-space)
+
+
+;;;###autoload
+(defun CJK-insert-space (arg)
+
+ "Insert tilde characters instead of spaces for LaTeX CJK documents.
+If `CJK-space-after-space' is non-nil, typing a space yields a space.
+Typing two consecutive spaces yields a tilde. If `CJK-space-after-space'
+is nil, the behaviour is reversed.
+
+With prefix argument, always inserts space characters."
+
+ (interactive "*P")
+
+ (if arg
+ (self-insert-command (prefix-numeric-value arg))
+ (TeX-update-style)
+ (if CJK-space-after-space
+ (insert (cond ((bobp)
+ ?\ )
+ ((not (= (preceding-char) ?\ ))
+ ?\ )
+ ((and (> (point) 2)
+ (save-excursion
+ (forward-char -2)
+ (looking-at (concat "[" CJK-space
+ (regexp-quote TeX-esc) "]"))))
+ ?\ )
+ (t
+ (delete-backward-char 1)
+ CJK-space)))
+ (insert (cond ((bobp)
+ ?\ )
+ ((= (preceding-char) (string-to-char TeX-esc))
+ ?\ )
+ ((= (preceding-char) ?\ )
+ ?\ )
+ ((and (> (point) 2)
+ (save-excursion
+ (forward-char -2)
+ (looking-at (concat (regexp-quote TeX-esc)
+ CJK-space))))
+ CJK-space)
+ ((= (preceding-char) (string-to-char CJK-space))
+ (delete-backward-char 1)
+ ?\ )
+ (t
+ CJK-space))))))
+
+;;; EOF