#+STARTUP: align fold hidestars oddeven indent #+SEQ_TODO: TODO(t) INPROGRESS(i) | DONE(d) CANCELED(c) * why not using hn api hn api will invole a lot of rest requests which would not be fast for emacs also the data layout is already available at hn webiste, one curl call and then parse them to org would be faster * parse front page now what * parse comments comment are same level in regard to html node but child comments have different ident block width top level comment child * CANCELED show number of child comments https://emacs.stackexchange.com/questions/10245/counting-sub-headings-in-org-mode-using-elisp or recursive on dom will be just fine don't know about the performance impact * DONE run eslip on org link CLOSED: [2019-08-21 Wed 23:46] #+begin_example org-mode [[elisp:(find-function 'describe-function)]] #+end_example [[elisp:(hnreader-comment 20724363)][read] ;; (setq-local org-confirm-elisp-link-function nil) user org-add-link-type to avoid confirm message (org-add-link-type "grep" 'endless/follow-grep-link) (defun endless/follow-grep-link (regexp) "Run `rgrep' with REGEXP as argument." (grep-compute-defaults) (rgrep regexp "*" (expand-file-name "./"))) https://endlessparentheses.com/use-org-mode-links-for-absolutely-anything.html use this one (org-link-set-parameters TYPE &rest PARAMETERS) Set link TYPE properties to PARAMETERS. PARAMETERS should be :key val pairs. how can i register this handler? autoload? just a private flag on running * DONE comment page show main link and intro text * DONE display page takes page number * DONE reload page * DONE frontpage has next page link * DONE remove * in text find and replace raw htlm '>*' with '>-' * add eww link * DONE long links are cut off (get-text-property (point) 'shr-url) (get-text-property (point) 'htmlize-link) (text-properties-at (point)) (font-lock-multiline t htmlize-link (:uri "elisp:(hnreader-comment 20751164)") help-echo "LINK: elisp:(hnreader-comment 20751164)" keymap (keymap (follow-link . mouse-face) (mouse-3 . org-find-file-at-mouse) (mouse-2 . org-open-at-mouse)) mouse-face highlight face org-link wrap-prefix #(" " 0 2 (face org-indent)) line-prefix #(" " 0 2 (face org-indent)) fontified t) https://emacs.stackexchange.com/questions/16909/how-can-i-get-all-file-links-in-one-org-mode-file Assuming the current buffer is an org-mode buffer, the following code collects paths of file links in the current buffer. #+begin_example elisp (org-element-map (org-element-parse-buffer) 'link (lambda (link) (when (string= (org-element-property :type link) "file") (org-element-property :path link)))) #+end_example In an org buffer, (org-element-parse-buffer) returns the parse tree of the current buffer. And you can map over it with org-element-map. with the org buffer, run through it find the text prop of htmlize-link or hack shr insert link ** or a simple way chec in dom for a link and change it downside is speed, no we need to iterate and look for a tag and then mutate it, the push it back to the dom. Since the dom is a list you need to map the whole dom it works but it seems a bit slow (can't confirm thsi) and long links looks ugly ** got through the buffer look for each char - get its text properties 'shr-url and 'htmlize-link if they are the same then ok, if not assign htmlize-link to value of 'shr-url better use https://www.gnu.org/software/emacs/manual/html_node/elisp/Property-Search.html#Property-Search * DONE first run on comment buffer won't have right width also need to shadow shr-use-fonts to nil * DONE display OP post ins ask and OP infor class fatitem is 4 long when ask it's 6 items long just take from 1 to the peniculate item with seq-take and seq-drop * DONE add back (history) button a variable to hold history * DONE option to open comment in same window use pop-to-buffer isn't what we want, pop-to-buffer-same-window looks the same as switch-to-buffer display-buffer returns windows most of the time, so use it instead with select-window (select-window (display-buffer buf '(display-buffer-use-some-window))) * DONE add header in list pages * DONE comment to open comment page CLOSED: [2020-03-21 Sat 12:34] (hnreader-read-item "https://news.ycombinator.com/item?id=22603129") extract id then pass to hnreader-comment * DONE add function to insert hn item to org buffer CLOSED: [2020-03-21 Sat 12:48] [[elisp:(hnreader-comment 1)][https://news.ycombinator.com/item?id=1]] * DONE refactor hnreader-comment to take url instead of id CLOSED: [2020-07-19 Sun 21:49] it reads comment id actually we don't need it just read the url instead