[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
Re: clipboard and bitmap
- X-ml-count: 1757
- Subject: Re: clipboard and bitmap
- From: Keiichi Suzuki <keiichi@xxxxxxxxx>
- Date: 17 Dec 1999 10:10:23 +0900
- User-agent: Nana-gnus/6.13.11.1 SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/20.4 (i386-*-nt4.0.1381) MULE/4.1 (AOI) Meadow/1.11b1 (TSUYU)
>>>>> meadow-users-jp の No. 1756
>>>>> Message-Id: <199912161216.VAA11845@xxxxxxxxxxxxxxxxx> で、
>>>>> "Shin" == Shin Miyazaki <shinm@xxxxxxxxx>さま曰く...
Shin> うーん、ここら辺は emacs の内部処理が私にはわからないので何とも
Shin> 言えないのです。件のテキストを Meadow 上でペーストした文書を
Shin> Shift_JIS で保存しようとすると
>> These can't be encoded safely by the coding system sjis.
>> Please select one from the following safe coding systems:
これは、 encode 中に判定しているのではなく、 encode する前に判定していま
すので、ちょっと事情が違います。
;; select-safe-coding-system-function を参照してください。
Shin> てなことを言われるんで、丸っきり判定出来ないものでも無いかとは思う
Shin> のですが。
>> w32-set-clipboard-data を再定義してしまえばできなくもなさそうですが、
>> そうすると Meadow to Meadow のルートでも、 Shift_JIS に encode できな
>> いものがコピーできなくなってしまうと思いますので、なかなか悩ましいと
>> ころです。
Shin> この点は大丈夫じゃないでしょうか。mw32clipbrd.c をちらっと覗いて見
Shin> たら、w32_mule_clipboard_format に入るものは CF_TEXT に入る、
Shin> encode されたものとは無関係なようですし。
まあ、 C level で変更すればそれこそ何でもありだとは思いますが...
;; 宗教上の理由から今のところ本業以外では C 言語に関わることができません。
;; ;-)
Elisp 的に w32-set-clipboard-data を再定義する(私がいう再定義というのは
こちらの話です。)のであれば、 defadvice 等で、元々の w32-set-clipboard-data へ
の入力文字列を、あらかじめいじってしまうという方法しかとれないと思います
ので、やはり無理ではないでしょうか?
--
鈴木圭一 / keiichi@xxxxxxxxx
PGP finger print (DH/DSS)
0B32 B37E 6DE9 3BC1 68A4 4089 7AAF 2B03 ECBD 614B
(defadvice w32-set-clipboard-data
(before remove-invalid-chars-for-encoding activate)
(let* ((charsets (find-charset-string string))
(safe-coding-systems (find-coding-systems-for-charsets charsets))
(coding (or code w32-clipboard-coding-system)))
(unless (and coding
(memq (coding-system-base coding) safe-coding-systems))
(let ((safe-charsets (coding-system-get coding 'safe-charsets)))
(with-temp-buffer
(insert string)
(goto-char (point-min))
(while (re-search-forward "[^\000-\177]" nil t)
(backward-char)
(if (memq (charset-after) safe-charsets)
(forward-char)
(while (null (memq (charset-after) safe-charsets))
(delete-char 1))))
(setq string (buffer-string)))))))