Subject: Re: bug#397: 23.0.60; T in Info when in (dir)

From: Lars Ingebrigtsen <[email-masked]>
Date: Wed, 27 Apr 2016 20:28:15 +0200

Drew Adams <[email-masked]> writes:

> Fair enough.  Someone might actually try it: use the :enable
> guard (Info-find-node "dir" "*TOC*") and see whether it is
> in fact onerous.  If it is then I agree with (both of) you:
> we can do without disabling the menu item.

Well, using it as is doesn't really work, because it does a lot
of... stuff.

Here's how it starts:

(defun Info-find-node-2 (filename nodename &optional no-going-back strict-case)
  (buffer-disable-undo (current-buffer))
  (or (derived-mode-p 'Info-mode)
      (Info-mode))
  (widen)
  (setq Info-current-node nil)
  (unwind-protect
      (let ((case-fold-search t)
	    (virtual-fun (Info-virtual-fun 'find-node
					   (or filename Info-current-file)
					   nodename))
	    anchorpos)
	(cond
	 ((functionp virtual-fun)
	  (let ((filename (or filename Info-current-file)))
	    (setq buffer-read-only nil)
	    (setq Info-current-file filename
		  Info-current-subfile nil
		  Info-current-file-completions nil
		  buffer-file-name nil)
	    (erase-buffer)

So that's not the right thing to use.

(Info-virtual-fun 'find-node "dir" "*TOC*")
=> Info-directory-find-node

(defun Info-directory-find-node (_filename _nodename &optional _no-going-back)
  "Directory-specific implementation of `Info-find-node-2'."
  (Info-insert-dir))

...

(defun Info-insert-dir ()
  (if (and Info-dir-contents Info-dir-file-attributes
	   ;; Verify that none of the files we used has changed
	   ;; since we used it.
	   (eval (cons 'and
		       (mapcar (lambda (elt)
				 (let ((curr (file-attributes
					      ;; Handle symlinks
					      (file-truename (car elt)))))

And down the rabbit hole we go.  Why are we calling that function and
ignoring the parameters?  It's all very confusing.

So does somebody know what the real way to find out whether a node
exists is?  :-)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no