summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorryanss2015-02-06 23:59:00 -0500
committerryanss2015-02-06 23:59:00 -0500
commit183c28ddd626a45737a429d32f2d215d925e17ed (patch)
treef0d2065d716021025f048e59418da0c86e0b5810
parentc62729e93528bdbacc99139dc91401b2eefa663b (diff)
downloadvim-hn-183c28ddd626a45737a429d32f2d215d925e17ed.tar.gz
Add opening links with default web browser
-rw-r--r--ftplugin/hackernews.vim2
-rw-r--r--plugin/hackernews.py20
-rw-r--r--plugin/hackernews.vim5
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