Re: setting up 'imenu'

2020-09-11 Thread Jeremie Juste
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'

2020-09-11 Thread Sharon Kimble
-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'

2020-09-10 Thread Jeremie Juste


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