MicroEmacs / Macros-Imenu
Motivation
Providing an Emacs like imenu command for MicroEmacs.
imenu.emf is an macro simliar to the emacs imenu. You must save the file imenu.emf to your microemacs/user directory and add the lines:
define-macro-file imenu imenu define-macro-file imenu imenu-refresh
to your user.emf-file in order to invoke imenu. If you want to redefine the indexing schema you must invoke imenu-refresh.
; imenu.emf define-macro imenu ; i use a high number trying not to disturb the original .osd.next variable ; hopefully that your session will not be to long set-variable #l0 10000 ; dangerous is somebody is building here an other osd set-variable #l1 1 ; osd incrementor for item-additions !if &or ¬ &exists :index-string ¬ @# ; then ask for a new one set-variable :index-string @ml "index what" !endif ; at first destroy possible old items set-variable #l5 40 ; let's say there is a max of 40 items !while &great #l5 1 -1 osd #l0 set-variable #l5 &dec #l5 1 !done ; constant osd osd #l0 0 "b" set-alpha-mark "p" beginning-of-buffer !force search-forward :index-string !while $status beginning-of-line set-mark 2 forward-word exchange-point-and-mark copy-region set-variable #l2 @y -1 yank end-of-line osd #l0 &pinc #l1 1 "" &cat &cat &cat &cat "|" #l2 " |" $window-line "|" f imenu-osd-goto-line !force search-forward :index-string !done goto-alpha-mark "p" #l0 osd 0 "ba" &add $cursor-x 1 &sub $cursor-y 1 !emacro 0 define-macro imenu-osd-goto-line ; fetch the line number and goto goto-line &lget $result 2 !emacro