help-gnu-emacs
[Top][All Lists]
Advanced

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

Re: how to use 'easy-menu'?


From: Sharon Kimble
Subject: Re: how to use 'easy-menu'?
Date: Sat, 29 Nov 2014 14:11:47 +0000
User-agent: Gnus/5.130012 (Ma Gnus v0.12) Emacs/24.4 (gnu/linux)

Drew Adams <drew.adams@oracle.com> writes:

>> I have an easy-menu menu that works under org-mode, but I would now
>> like to use it emacs-wide, i.e. have it available when I’m using
>> latex, or a shell-script, anywhere really.
>
> I don't have an answer for you.  But after you get the answer, if
> you think that is was understandable that you were not able to
> find it easily by consulting the doc, then consider reporting a
> doc-improvement request: `M-x report-emacs-bug', explaining what
> was missing or confusing to you.

Thanks Drew, I've partially solved it. This is now my working actual
working code -

--8<---------------cut here---------------start------------->8---
#+BEGIN_SRC emacs-lisp
(easy-menu-define sk-menu global-map "menu"
  '("Mono"
    ("Misc" ;; submenu
       ["Wrap Text" auto-fill-mode]
       ["List packages for update" paradox-list-packages]
       ["Get colours" list-colors-display]
       ["Delete this file" delete-this-file]
       ["? stack-overflow" howdoi-query]
       ["shell" shell]
       ["password-vault" password-vault]
       ["Start org-mode" org-mode]
       ["insert drawer" org-insert-property-drawer]
       ["new buffer" xah-new-empty-buffer]
       ["w3m open new site" w3m-open-site]
       ["w3m buffer to org-style" w3m-get-buffer-with-org-style]
       ["new latex" fc-insert-latex-skeleton]
       ["cleanup buffer" buffer-cleanup]
       ["toggle page lines" linum-mode]
     )
     ("Clock" ;; submenu
       ["In" org-clock-in]
       ["Out" org-clock-out]
       ["Resolve" org-resolve-clocks]
       ["Goto" org-clock-goto]
       )
     ("Agenda" ;; submenu
       ["Regular View" org-agenda-list]
       ["Show Agenda" org-agenda]
       )
     ("Org2blog" ;; submenu
       ["New entry" org2blog/wp-new-entry]
       ["Push draft" org2blog/wp-post-buffer]
       ["Publish" org2blog/wp-post-buffer-and-publish]
       )
     ("Words" ;; submenu
       ["dictionary" words-dictionary]
       ["thesaurus" words-thesaurus]
       ["google" words-google]
       ["wikipedia search" wikipedia-search]
       )
      ))
      (easy-menu-add-item nil '("Tools") sk-menu "Mono")
#+END_SRC
--8<---------------cut here---------------end--------------->8---

This now shows as below, and also added on to the "Tools" menu at
the very bottom, plus it is now global! When it shows in the menu
list of items, clumsily put, I mean in this continuance -
"Mono,Imenu,Org,etc" , but *always* at the extreme left. I haven't
yet found a way of positioning it better, although the second
easymenu is always close to the "current mode||common menus" divide.

--8<---------------cut here---------------start------------->8---
Mono
  |- Misc
  |- Clock
  |- Agenda
  |- Org2blog
  |- Words
--8<---------------cut here---------------end--------------->8---

The other type of menu that 'easymenu' can create takes the form of
a long list where you can choose one item, but this one *cannot*
have nested menus.

This is the one that handles my theme choice with this as the code -

--8<---------------cut here---------------start------------->8---
(add-to-list 'custom-theme-load-path
               (file-name-as-directory
                                "/home/boudiccas/git/replace-colorthemes"))
(add-to-list 'custom-theme-load-path "/home/boudiccas/.emacs.d/themes")
(add-to-list 'custom-theme-load-path "/home/boudiccas/.emacs.d/elpa")
;; set up a variable and initialize it
(defvar tj-current-theme 'flatui "Current Color Theme")
;; Install the default scheme
(load-theme tj-current-theme t)
;; Function to first disable current theme, then create
;; and install a new one
(defun tj-load-theme (new-theme)
  "Disable existing themes before loading new theme"
  (interactive)
  (disable-theme tj-current-theme)
  (setq tj-current-theme new-theme)
  (load-theme tj-current-theme))

;; Example menu
(easy-menu-add-item ;; console
 nil nil
 (easy-menu-create-menu
 "Theme"
 '(["1) Dark - Goldenrod" (tj-load-theme 'goldenrod) :active t]
   ["2) Dark - Darkest midnight" (tj-load-theme 'darkest-midnight) :active t]
   ["3) Dark - soft-morning" (tj-load-theme 'soft-morning) :active t]
   ["4) Light - darkest-dawn" (tj-load-theme 'darkest-dawn) :active t]
   ["5) Light - Wheat" (tj-load-theme 'wheat) :active t]
   ["6) Dark - Smyx" (tj-load-theme 'smyx) :active t]
   ["7) Light - monokai" (tj-load-theme 'monokai) :active t]
   ["8) Dark - dark-emacs" (tj-load-theme 'dark-emacs) :active t]
   ["9) Dark - pok-wob" (tj-load-theme 'pok-wob) :active t]
   ["10) clues" (tj-load-theme 'clues) :active t]
   ["11) soft-stone" (tj-load-theme 'soft-stone) :active t]
      )))
#+end_src
--8<---------------cut here---------------end--------------->8---

But this one cannot have nested items/sections, it just has a
straight list.

I would love to be proved wrong in both of these cases, i.e., the
straight list + nested items/sections, and the positioning of the
nested list.

Sharon.
-- 
A taste of linux = http://www.sharons.org.uk
my git repo = https://bitbucket.org/boudiccas/dots
TGmeds = http://www.tgmeds.org.uk
Debian testing, fluxbox 1.3.5, emacs 24.4.1.0

Attachment: signature.asc
Description: PGP signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]