-
Notifications
You must be signed in to change notification settings - Fork 10
/
emu-mule.el
126 lines (111 loc) · 3.15 KB
/
emu-mule.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
;;;
;;; emu-mule.el --- Mule 2.* emulation module for Mule
;;;
;;; Copyright (C) 1995 Free Software Foundation, Inc.
;;; Copyright (C) 1994,1995 MORIOKA Tomohiko
;;;
;;; Author: MORIOKA Tomohiko <morioka@jaist.ac.jp>
;;; Version:
;;; $Id$
;;; Keywords: emulation, compatibility, Mule
;;;
;;; This file is part of tl (Tiny Library).
;;;
;;; 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, 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. If not, write to the Free Software
;;; Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
;;;
;;; Code:
(defun some-element (pred seq)
"Return the first element of sequence SEQ
whose return value applied function PRED is not nil.
[emu-mule; tl-list function]"
(let ((i 0)(len (length seq)) element)
(catch 'tag
(while (< i len)
(if (funcall pred (setq element (elt seq i)))
(throw 'tag element)
)
(setq i (+ i 1))
))
))
(if (not (boundp 'emacs-major-version))
(defconst emacs-major-version (string-to-int emacs-version))
)
;;; @ leading-character
;;;
(defun get-lc (chr)
"Return leading character of CHAR or LEADING-CHARACTER."
(if (< chr 128)
lc-ascii
chr))
;;; @ version specific features
;;;
(cond ((>= emacs-major-version 19)
(require 'emu-19)
(defun fontset-pixel-size (fontset)
(elt
(get-font-info
(some-element
(function
(lambda (n)
(not (= n -1))
))
(cdr (get-fontset-info fontset))
)) 5))
)
(t
(require 'emu-18)
(defun tl:make-overlay (beg end &optional buffer type))
(defun tl:overlay-put (overlay prop value))
(defun tl:add-text-properties (start end properties &optional object))
))
;;; @@ truncate-string
;;;
(or (fboundp 'truncate-string)
;;; Imported from Mule-2.3
(defun truncate-string (str width &optional start-column)
"Truncate STR to fit in WIDTH columns.
Optional non-nil arg START-COLUMN specifies the starting column.
\[emu-mule.el; Mule 2.3 emulating function]"
(or start-column
(setq start-column 0))
(let ((max-width (string-width str))
(len (length str))
(from 0)
(column 0)
to-prev to ch)
(if (>= width max-width)
(setq width max-width))
(if (>= start-column width)
""
(while (< column start-column)
(setq ch (aref str from)
column (+ column (char-width ch))
from (+ from (char-bytes ch))))
(if (< width max-width)
(progn
(setq to from)
(while (<= column width)
(setq ch (aref str to)
column (+ column (char-width ch))
to-prev to
to (+ to (char-bytes ch))))
(setq to to-prev)))
(substring str from to))))
;;;
)
;;; @ end
;;;
(provide 'emu-mule)
;;; emu-mule.el ends here