Re: setting up 'imenu'
Hello Sharon, I must have failed to grasp the subtleties of your workflow. And my explanation was surely not very friendly. I apologize for that. If your workflow works for you this is what matters. > Sorry, but I just feel that your system is over-complicated as compared > to my simplistic way! I cannot reproduce your error right now. But I would suggest a test. If you start emacs without any configuration, on the command line > emacs -Q Then execute the code below. Does ido-goto-symbol work as you expect? #+begin_src emacs-lisp (defun ido-goto-symbol ( symbol-list) "Refresh imenu and jump to a place in the buffer using Ido." (interactive) (unless (featurep 'imenu) (require 'imenu nil t)) (cond ((not symbol-list) (let ((ido-mode ido-mode) (ido-enable-flex-matching (if (boundp 'ido-enable-flex-matching) ido-enable-flex-matching t)) name-and-pos symbol-names position) (unless ido-mode (ido-mode 1) (setq ido-enable-flex-matching t)) (while (progn (imenu--cleanup) (setq imenu--index-alist nil) (ido-goto-symbol (imenu--make-index-alist)) (setq selected-symbol (ido-completing-read "Symbol? " symbol-names)) (string= (car imenu--rescan-item) selected-symbol))) (unless (and (boundp 'mark-active) mark-active) (push-mark nil t nil)) (setq position (cdr (assoc selected-symbol name-and-pos))) (cond ((overlayp position) (goto-char (overlay-start position))) (t (goto-char position) ((listp symbol-list) (dolist (symbol symbol-list) (let (name position) (cond ((and (listp symbol) (imenu--subalist-p symbol)) (ido-goto-symbol symbol)) ((listp symbol) (setq name (car symbol)) (setq position (cdr symbol))) ((stringp symbol) (setq name symbol) (setq position (get-text-property 1 'org-imenu-marker symbol (unless (or (null position) (null name) (string= (car imenu--rescan-item) name)) (add-to-list 'symbol-names name) (add-to-list 'name-and-pos (cons name position (global-set-key (kbd "C-c i") 'ido-goto-symbol) ; or any key you see fit #+end_src Best regards, Jeremie
Re: setting up 'imenu'
-BEGIN PGP SIGNED MESSAGE- Hash: SHA512 Jeremie Juste writes: > Hello Sharon, Hi Jeremie. > Unfortunately I cannot reproduce your issue. I created a list of 56 sub > heading and I > can view the heading Still a sample 0 until Still a sample 56. > > > ** TODO * etc and onwards > ** TODO * and another one > ** Still a sample 0 > ** Still a sample 1 > ** Still a sample 2 > ** Still a sample 3 > ** Still a sample 4 > > It might be because I am using [1] this modification from emacswiki > https://www.emacswiki.org/emacs/ImenuMode. This is my imenu setup from my config file - - --8<---clip one---start->8--- ** Imenu #+BEGIN_SRC emacs-lisp (require 'imenu+) (global-set-key (kbd "C-x 2") 'imenu-add-to-menubar) #+END_SRC [2020-09-10 Thu 18:29] Make sure auto automatically rescan for imenu changes #+BEGIN_SRC emacs-lisp (set-default 'imenu-auto-rescan t) #+END_SRC [2015-12-19 Sat 04:55] [2017-01-16 Mon 23:39] #+BEGIN_SRC emacs-lisp ;; Jump to a definition in the current file. (This is awesome.) ;; (global-set-key (kbd "M-i") 'prelude-ido-goto-symbol) ;; (require 'imenu) ;; (set-default 'imenu-auto-rescan t) ;; (defun prelude-ido-goto-symbol ( symbol-list) ;; "Refresh imenu and jump to a place in the buffer using Ido." ;;(interactive) ;;(unless (featurep 'imenu) ;; (require 'imenu nil t)) ;; (cond ;; ((not symbol-list) ;; (let ((ido-mode ido-mode) ;;(ido-enable-flex-matching ;; (if (boundp 'ido-enable-flex-matching) ;; ido-enable-flex-matching t)) ;;name-and-pos symbol-names position) ;;(unless ido-mode ;; (ido-mode 1) ;; (setq ido-enable-flex-matching t)) ;;(while (progn ;; (imenu--cleanup) ;;(setq imenu--index-alist nil) ;; (prelude-ido-goto-symbol (imenu--make-index-alist)) ;; (setq selected-symbol ;; (ido-completing-read "Symbol " symbol-names)) ;; (string= (car imenu--rescan-item) selected-symbol))) ;;(unless (and (boundp 'mark-active) mark-active) ;; (push-mark nil t nil)) ;;(setq position (cdr (assoc selected-symbol name-and-pos))) ;;(cond ;; ((overlayp position) ;; (goto-char (overlay-start position))) ;; (t ;; (goto-char position) ;; ((listp symbol-list) ;; (dolist (symbol symbol-list) ;;(let (name position) ;; (cond ;; ((and (listp symbol) (imenu--subalist-p symbol)) ;;(prelude-ido-goto-symbol symbol)) ;; ((listp symbol) ;;(setq name (car symbol)) ;;(setq position (cdr symbol))) ;; ((stringp symbol) ;;(setq name symbol) ;;(setq position ;; (get-text-property 1 'org-imenu-marker symbol ;; (unless (or (null position) (null name) ;; (string= (car imenu--rescan-item) name)) ;; (add-to-list 'symbol-names name) ;; (add-to-list 'name-and-pos (cons name position #+END_SRC [2014-11-16 Sun 16:09] [2017-01-16 Mon 23:49] [2020-09-10 Thu 18:35] #+begin_src emacs-lisp (require 'popup-imenu) #+end_src [2015-12-29 Tue 13:37] [2017-01-17 Tue 10:39] imenu #+BEGIN_SRC emacs-lisp ;; setting up 'imenu' ;; (local-set-key "\C-x\C-a" 'show-all) (add-hook 'org-mode-hook (lambda () (imenu-add-to-menubar "Imenu"))) (setq org-imenu-depth 6) (add-hook 'rst-mode-hook (lambda () (imenu-add-to-menubar "Imenu"))) (setq adoc-imenu-depth 6) (add-hook 'markdown-mode-hook (lambda () (imenu-add-to-menubar "Imenu"))) (setq adoc-imenu-depth 6) (add-hook 'LaTeX-mode-hook (lambda () (imenu-add-to-menubar "Imenu"))) (setq latex-imenu-depth 6) #+END_SRC [2015-04-08 Wed 23:54] [2017-01-17 Tue 11:04] FIXIT imenu-anywhere #+BEGIN_SRC emacs-lisp (require 'imenu-anywhere) (global-set-key (kbd "C-+") 'imenu-anywhere) #+END_SRC [2014-11-14 Fri 11:15] [2015-05-23 Sat 02:34] [2017-01-17 Tue 11:05] fails with - helm-build-sync-source is void [2020-09-10 Thu 18:37] dired-imenu #+begin_src emacs-lisp ;;(require 'dired-imenu) #+end_src [2015-05-04 Mon 13:54] [2017-01-17 Tue 13:24] [2020-09-10 Thu 18:38] FIXIT imenu-list #+BEGIN_SRC emacs-lisp (require 'imenu-list) (global-set-key (kbd "M-g 1") #'imenu-list-smart-toggle) (setq imenu-list-focus-after-activation t) (setq imenu-list-auto-resize t) #+END_SRC [2017-08-10 Thu 12:07] https://github.com/bmag/imenu-list #+BEGIN_SRC emacs-lisp (defun ido-goto-symbol ( symbol-list) "Refresh imenu and jump to a place in the buffer using Ido." (interactive) (unless (featurep 'imenu) (require 'imenu nil t)) (cond ((not symbol-list) (let ((ido-mode ido-mode) (ido-enable-flex-matching (if (boundp 'ido-enable-flex-matching) ido-enable-flex-matching t))
Re: setting up 'imenu'
Hello Sharon, Unfortunately I cannot reproduce your issue. I created a list of 56 sub heading and I can view the heading Still a sample 0 until Still a sample 56. ** TODO * etc and onwards ** TODO * and another one ** Still a sample 0 ** Still a sample 1 ** Still a sample 2 ** Still a sample 3 ** Still a sample 4 It might be because I am using [1] this modification from emacswiki https://www.emacswiki.org/emacs/ImenuMode. I another workflow comes to my mind when reading yours. Instead of using "TODO * ..." I would use the TODO keywords and tell org-mode to list all the todos. For instance with the command M-x org-show-todo-tree. A another way of working might be the following. --- file - writings.org #+TODO: TODO(t) TOWRITE(w) | DONE(d) * TOWRITE This is article 1 * TOWRITE This is article 2 * DONE This is article 2 #+begin_src elisp (org-agenda-file-to-front) #+end_src --- EOF Add the file to the agenda ( by default C-[ ), or execute the lisp chunk in the file writings.org. Then you can M-x org-todo-list. To view all your todo|towrite|done articles. Hope this help, Jeremie [1] ;; * imenu (defun ido-goto-symbol ( symbol-list) "Refresh imenu and jump to a place in the buffer using Ido." (interactive) (unless (featurep 'imenu) (require 'imenu nil t)) (cond ((not symbol-list) (let ((ido-mode ido-mode) (ido-enable-flex-matching (if (boundp 'ido-enable-flex-matching) ido-enable-flex-matching t)) name-and-pos symbol-names position) (unless ido-mode (ido-mode 1) (setq ido-enable-flex-matching t)) (while (progn (imenu--cleanup) (setq imenu--index-alist nil) (ido-goto-symbol (imenu--make-index-alist)) (setq selected-symbol (ido-completing-read "Symbol? " symbol-names)) (string= (car imenu--rescan-item) selected-symbol))) (unless (and (boundp 'mark-active) mark-active) (push-mark nil t nil)) (setq position (cdr (assoc selected-symbol name-and-pos))) (cond ((overlayp position) (goto-char (overlay-start position))) (t (goto-char position) ((listp symbol-list) (dolist (symbol symbol-list) (let (name position) (cond ((and (listp symbol) (imenu--subalist-p symbol)) (ido-goto-symbol symbol)) ((listp symbol) (setq name (car symbol)) (setq position (cdr symbol))) ((stringp symbol) (setq name symbol) (setq position (get-text-property 1 'org-imenu-marker symbol (unless (or (null position) (null name) (string= (car imenu--rescan-item) name)) (add-to-list 'symbol-names name) (add-to-list 'name-and-pos (cons name position (global-set-key (kbd "C-c i") 'ido-goto-symbol) ; or any key you see fit