Skip to content

Latest commit

 

History

History
139 lines (113 loc) · 5.37 KB

TODOs.org

File metadata and controls

139 lines (113 loc) · 5.37 KB

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

<table border=”0” class=’comment-tree’> <tr class=’athing comtr ’ id=’20724657’> comment are same level in regard to html node but child comments have different ident block width

top level comment <td class=’ind’><img src=”s.gif” height=”1” width=”0”></td> child

<td class=’ind’><img src=”s.gif” height=”1” width=”40”></td>

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

run eslip on org link

[[elisp:(find-function 'describe-function)]]

[[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

comment page show main link and intro text

display page takes page number

reload page

frontpage has next page link

remove * in text

find and replace raw htlm ‘>*’ with ‘>-’

add eww link

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.

(org-element-map (org-element-parse-buffer) 'link
  (lambda (link)
    (when (string= (org-element-property :type link) "file")
      (org-element-property :path link))))

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

first run on comment buffer won’t have right width

also need to shadow shr-use-fonts to nil

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

add back (history) button

a variable to hold history

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)))

add header

in list pages

comment to open comment page

(hnreader-read-item “https://news.ycombinator.com/item?id=22603129”) extract id then pass to hnreader-comment

add function to insert hn item to org buffer

https://news.ycombinator.com/item?id=1

refactor hnreader-comment to take url instead of id

it reads comment id actually we don’t need it just read the url instead

add reply link under each comment

link can be hidden some where as text properties?

just show the links, reply only shows for live discussion

hn html responses to browser and wget are different

with browser the commtext span includes the reply while with wget they are sibling

inconsistent new lines

the first paragraph is a span, next one is a p. So if comments has only one paragraph it will not be appended with a new line char

shr is can handle this problem, append and empty p node to the dom and let it shr deal with it