emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [PATCH] org-id-goto doesn't work if buffer is narrowed.


From: Nicolas Goaziou
Subject: Re: [O] [PATCH] org-id-goto doesn't work if buffer is narrowed.
Date: Sun, 25 Oct 2015 09:38:52 +0100

Hello,

Puneeth Chaganti <address@hidden> writes:

> Here is a patch that works for the case you describe.

Thank you. Some comments follow.

> +  (org-id-show id 'org-pop-to-buffer-same-window))

  (org-id-show id #'org-pop-to-buffer-same-window)

> +(defun org-id-show (id cmd)
> +  "Show an entry with id ID by buffer-switching using CMD."

You should explain what is CMD. If it is a function, you should spell
out its signature.

> +  (let ((m (org-id-find id 'marker)))
> +    (unless m
> +      (error "Cannot find entry with ID \"%s\"" id))
> +    (if (not (equal (current-buffer) (marker-buffer m)))
> +     (funcall cmd (marker-buffer m)))

(unless (eq (current-buffer) (marker-buffer m))
 ...)
 
> +    (when (and (org-buffer-narrowed-p)
> +            (let ((pos (marker-position m)))
> +              (or (< pos (point-min))
> +                  (> pos (point-max)))))
> +      (widen))

`org-buffer-narrowed-p' is not useful here since you check boundaries
right after its call.

  (when (let ((pos (marker-position m)))
          (or (< pos (point-min))
              (> pos (point-max))))
    (widen))

> +    (goto-char m)
> +    (move-marker m nil)
> +    (org-show-context)))

I think this should be (org-show-context 'link-search) according to
`org-show-context-detail'.

>  ;; id link type
>  
>  ;; Calling the following function is hard-coded into `org-store-link',
> @@ -659,25 +669,15 @@ optional argument MARKERP, return the position as a new 
> marker."
>  (defun org-id-open (id)
>    "Go to the entry with id ID."
>    (org-mark-ring-push)
> -  (let ((m (org-id-find id 'marker))
> -     cmd)
> -    (unless m
> -      (error "Cannot find entry with ID \"%s\"" id))
> -    ;; Use a buffer-switching command in analogy to finding files
> -    (setq cmd
> -       (or
> -        (cdr
> -         (assq
> -          (cdr (assq 'file org-link-frame-setup))
> -          '((find-file . switch-to-buffer)
> -            (find-file-other-window . switch-to-buffer-other-window)
> -            (find-file-other-frame . switch-to-buffer-other-frame))))
> -        'switch-to-buffer-other-window))
> -    (if (not (equal (current-buffer) (marker-buffer m)))
> -     (funcall cmd (marker-buffer m)))
> -    (goto-char m)
> -    (move-marker m nil)
> -    (org-show-context)))
> +  (let ((cmd (or
> +           (cdr
> +            (assq
> +             (cdr (assq 'file org-link-frame-setup))
> +             '((find-file . switch-to-buffer)
> +               (find-file-other-window . switch-to-buffer-other-window)
> +               (find-file-other-frame . switch-to-buffer-other-frame))))
> +           'switch-to-buffer-other-window)))

  #'switch-to-buffer-other-window

Regards,

-- 
Nicolas Goaziou



reply via email to

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