diff options
| author | ryanss | 2015-02-06 23:59:00 -0500 |
|---|---|---|
| committer | ryanss | 2015-02-06 23:59:00 -0500 |
| commit | 183c28ddd626a45737a429d32f2d215d925e17ed (patch) | |
| tree | f0d2065d716021025f048e59418da0c86e0b5810 | |
| parent | c62729e93528bdbacc99139dc91401b2eefa663b (diff) | |
| download | vim-hn-183c28ddd626a45737a429d32f2d215d925e17ed.tar.gz | |
Add opening links with default web browser
| -rw-r--r-- | ftplugin/hackernews.vim | 2 | ||||
| -rw-r--r-- | plugin/hackernews.py | 20 | ||||
| -rw-r--r-- | plugin/hackernews.vim | 5 |
3 files changed, 19 insertions, 8 deletions
diff --git a/ftplugin/hackernews.vim b/ftplugin/hackernews.vim new file mode 100644 index 0000000..590463c --- /dev/null +++ b/ftplugin/hackernews.vim @@ -0,0 +1,2 @@ +noremap o :python hacker_news_link()<cr> +noremap O :python hacker_news_link(external=True)<cr> diff --git a/plugin/hackernews.py b/plugin/hackernews.py index 00e360e..b5f6304 100644 --- a/plugin/hackernews.py +++ b/plugin/hackernews.py @@ -6,6 +6,7 @@ import re import textwrap import urllib2 import vim +import webbrowser API_URL = "http://node-hnapi.herokuapp.com" @@ -39,7 +40,7 @@ def hacker_news(): vim.command("setlocal buftype=nofile") bwrite("┌───┐") - bwrite("│ Y │ Hacker News") + bwrite("│ Y │ Hacker News (news.ycombinator.com)") bwrite("└───┘") bwrite("") @@ -76,13 +77,17 @@ def hacker_news(): bwrite("") -def hacker_news_link(): +def hacker_news_link(external=False): line = vim.current.line # Search for Hacker News [item id] m = re.search(r"\[([0-9]+)\]$", line) if m: id = m.group(1) + if external: + browser = webbrowser.get() + browser.open("https://news.ycombinator.com/item?id="+id) + return item = json.loads(urllib2.urlopen(API_URL+"/item/"+id).read()) vim.command("edit .hackernews") bwrite("%s (%s)" % (item['title'], item['domain'])) @@ -118,11 +123,15 @@ def hacker_news_link(): if i != start: url += b[i][:b[i].find("]")] url = url.replace(" ", "").replace("\n", "") - vim.command("edit .hackernews") if url.find("http://news.ycombinator.com/item?id=") == 0: id = url[url.find("item?id=")+8:] + if external: + browser = webbrowser.get() + browser.open("https://news.ycombinator.com/item?id="+id) + return item = json.loads(urllib2.urlopen(API_URL+"/item/"+id).read()) + vim.command("edit .hackernews") bwrite(item['title']) bwrite("Posted %s by %s" % (item['time_ago'], item['user'])) bwrite("%d Points / %d Comments" % (item['points'], item['comments_count'])) @@ -132,6 +141,11 @@ def hacker_news_link(): print_comments(item['comments']) return + if external: + browser = webbrowser.get() + browser.open(url) + return + vim.command("edit .hackernews") content = urllib2.urlopen("http://fuckyeahmarkdown.com/go/?read=1&u="+url).read() for i, line in enumerate(content.split('\n')): if not line: diff --git a/plugin/hackernews.vim b/plugin/hackernews.vim index f73512a..768f136 100644 --- a/plugin/hackernews.vim +++ b/plugin/hackernews.vim @@ -3,16 +3,11 @@ if !has('python') finish endif - " Import Python code execute "python import sys" execute "python sys.path.append('" . expand("<sfile>:p:h") . "')" execute "python from hackernews import hacker_news, hacker_news_link" - command! HackerNews python hacker_news() -map <return> :python hacker_news_link()<cr> - - au! BufRead,BufNewFile *.hackernews set filetype=hackernews |
