2

ライブラリ内のスニペットの YASnippet 簡単メニューバー エントリ (使用されているモードに基づいて自動的にメニューに表示される) を複製し、それらを独自のカスタム メニューに組み込む方法を探しています。の入力はyas--minor-mode-menu機能しません。私が探しているコードは、基本的に、通常の簡単なメニュー バーのカスタマイズで動作するものと同じです。

(easy-menu-define my-custom-menu LaTeX-mode-map "My own custom menu"
'("My Stuff"
["YASnippet" yas--minor-menu-mode t]
("Sub Menu"
["My subentry" my-obscure-function t])))

以下のスクリーンショットの右クリック コンテキスト メニューは、ほとんど同じものを使用しています。

(define-key map [mymenu]   (cons "MyMenu" (make-sparse-keymap "hello world")))
(define-key map [mymenu 01]  (cons "latexmk" 'run-latexmk))
(define-key map [mymenu 02]  (cons "jump-to-pdf" 'TeX-view))

あきらめて各スニペットを単純に定義し、各定義のメニューエントリを作成するのは気が進まない:

(defun bold ()
(interactive) 
(yas--expand-or-visit-from-menu (quote latex-mode) "bold"))

スクリーンショット1
(出典: lawlist.com )

スクリーンショット2

4

1 に答える 1

3
(defvar lawlist-context-menu-map
  (let ((map (make-sparse-keymap "Context Menu")))
    (define-key map [help-for-help] (cons "Help" 'help-for-help))
    (define-key map [seperator-two] '(menu-item "--"))
    (define-key map [my-menu] (cons "LAWLIST" (make-sparse-keymap "My Menu")))
    (define-key map [my-menu 01] (cons "Next Line" 'next-line))
    (define-key map [my-menu 02] (cons "Previous Line" 'previous-line))
    (define-key map [seperator-one] '(menu-item "--"))
  map) "Keymap for the LAWLIST context menu.")

(defun lawlist-popup-context-menu  (event &optional prefix)
  "Popup a context menu."
  (interactive "@e \nP")
    (define-key lawlist-context-menu-map [lawlist-major-mode-menu]
      `(menu-item ,(symbol-name major-mode)
        ,(mouse-menu-major-mode-map) :visible t))
    (define-key lawlist-context-menu-map (vector major-mode)
      `(menu-item ,(concat "YAS " (symbol-name major-mode))
        ,(gethash major-mode yas--menu-table)
          :visible (yas--show-menu-p ',major-mode)))
    (popup-menu lawlist-context-menu-map event prefix))

(global-set-key [mouse-3] 'lawlist-popup-context-menu)

例
(出典: lawlist.com )

于 2013-10-06T17:46:21.750 に答える