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

[270] Re: sdoc-mode でのコンパイルと属性入力について



浅海さん wrote:
> > sdoc-mode.el の sdoc-tag-alist を定義(するための let* の中)で、
> >   (title '("title" nil))
> > となっていますが、これを link と同じように、
> >   (title '("title"))
> > にすればいいんじゃないでしょうか?
> 
>  これだと、属性値をminibufferから入力できなくならないですか?

sgml-mode ってそういう仕様ですよね?

sgml-mode.el の sgml-attributes と sgml-value を読む限りそう思えます。
HTML 3.2 用の属性値を定義した html-tag-alist でも、name属性、title属性、
alt属性などの属性値は minibuffer から入力できないですよね?

属性値の候補が無いのならば、minibuffer から入力できなくてもよい、という
設計上の判断だったのかもしれません。

それでも minibuffer から入力したいなら、sgml-value の変更となりましょう。

下記のように、オリジナルの sgml-value に一行追加したものを .emacs などで
定義しなおせば、とりあえずは動きます。

----- ここから ----- ここから ----- ここから ----- ここから -----
(defun sgml-value (alist)
  (setq alist (cdr alist))
  (if (stringp (car alist))
      (insert "=\"" (car alist) ?\")
    (if (eq (car alist) t)
        (if (cdr alist)
            (progn
              (insert "=\"")
              (setq alist (skeleton-read '(completing-read
                                           "[Value]: " (cdr alist))))
              (if (string< "" alist)
                  (insert (funcall skeleton-transformation alist) ?\")
                (delete-backward-char 2))))
      (insert "=\"")
      (if alist
          (insert (funcall skeleton-transformation
                           (skeleton-read '(completing-read "Value: " alist))))
          (insert (funcall skeleton-transformation
                           (skeleton-read '(read-string "Value: ")))))
      (insert ?\"))))
----- ここまで ----- ここまで ----- ここまで ----- ここまで -----

---
柴田 清己 (しばた せいき)