[Date Prev] [Date Index] [Date Next]
[Thread Prev] [Thread Index] [Thread Next]

[xyzzy:08720] Re: タブ・バーのタイトル文字列



なかだです。

At Wed, 19 Mar 2003 09:24:07 +0900,
takeharu_yanagiura@xxxxxxxxxxxxxxxxx wrote:
> >in: (tab-bar-current-item 'editor::pseudo-frame-bar)
> >out: (#S(editor::pseudo-frame name #1="Frame 1" winconf
> (window-configuration #<window 54137844> ((#<window >54137844> #<buffer:
> .xyzzy> #<marker: .xyzzy: 9945> #<marker: .xyzzy: 8995> #<marker: .xyzzy:
> 9999> nil nil nil >nil nil nil 0 -1 0 (0 0 1 1) (0 0 919 615))) (919 633))
> save-p t selected-fn nil deleted-fn nil) #1# nil)
> >出力が複雑ですが、この中の"Frame 1"という文字列を抽出して変数に代入したい
> のです。
> 
> 
> (cadr(tab-bar-current-item 'editor::pseudo-frame-bar))
> 
> ⇒ "Frame 1"
> 
> 何故かはサッパリわかりませんが(^^; cadr で こうなりましたが・・・。

このへんの構造には詳しくありませんが、一つのリストで同じオブジェ
クトが複数回参照されている場合、(循環参照を避けるために?)最初の
一回だけ実際の値を出力してその後は番号で同じものを表現するよう
になってるようです。

(let ((a "a")) (cons a a)) => (#1="a" . #1#)

ということで、#1="Frame 1"と#1#は同じオブジェクトになるので、
cadrで目的のものが得られるわけです。

carのstructureからも取り出せますが、やや面倒です。

(si:*slot-value (car (tab-bar-current-item
		      'editor::pseudo-frame-bar)) :name)

-- 
--- 僕の前にBugはない。
--- 僕の後ろにBugはできる。
    中田 伸悦

Index Home