~dricottone/vim-markdown-preview

ref: 1f913965ccd1277105fdc4498dc74fa49addfd47 vim-markdown-preview/plugin/vim-markdown-preview.vim -rw-r--r-- 3.1 KiB
1f913965 — JamshedVesuna Supports image loading and local html rendering 9 years ago
                                                                                
906c7a8f Jamshed Vesuna
cf2cc781 JamshedVesuna
a55bbfa2 Eric Siebeneich
2d5e5346 Jamshed Vesuna
cf2cc781 JamshedVesuna
2d5e5346 Jamshed Vesuna
906c7a8f Jamshed Vesuna
1f913965 JamshedVesuna
e6729c07 Jamshed Vesuna
1f913965 JamshedVesuna
e6729c07 Jamshed Vesuna
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
"============================================================
"                    Vim Markdown Preview
"   git@github.com:JamshedVesuna/vim-markdown-preview.git
"============================================================

function! Vim_Markdown_Preview()

  let BROWSER = 'google-chrome'
  let OSNAME = 'Unidentified'
  let REMOVE_TEMP_FILE = 0  "To remove the temp file, set to 1

  if has('win32')
    " Not yet used
    let OSNAME = 'win32'
  endif
  if has('unix')
    let OSNAME = 'unix'
  endif
  if has('mac')
    let OSNAME = 'mac'
    let BROWSER = 'safari'
  endif

  let curr_file = expand('%:p')
  call system('markdown ' . curr_file . ' > /tmp/vim-markdown-preview.html')

  if OSNAME == 'unix' && BROWSER == 'google-chrome'
    let chrome_wid = system("xdotool search --name 'vim-markdown-preview.html - Google Chrome'")
    if !chrome_wid
      "sleep 300m
      call system('see /tmp/vim-markdown-preview.html & > /dev/null &')
    else
      let curr_wid = system('xdotool getwindowfocus')
      call system('xdotool windowmap ' . chrome_wid)
      call system('xdotool windowactivate ' . chrome_wid)
      call system("xdotool key 'ctrl+r'")
      call system('xdotool windowactivate ' . curr_wid)
    endif
    "sleep 700m
  endif

  if OSNAME == 'mac' && BROWSER == 'safari'
    call system('open -g /tmp/vim-markdown-preview.html')
  endif

  if REMOVE_TEMP_FILE
    call system('rm /tmp/vim-markdown-preview.html')
  endif
endfunction


"Renders html locally and displays images
function! Vim_Markdown_Preview_Local()

  let BROWSER = 'google-chrome'
  let OSNAME = 'Unidentified'
  let REMOVE_TEMP_FILE = 0  "To remove the temp file, set to 1

  if has('win32')
    " Not yet used
    let OSNAME = 'win32'
  endif
  if has('unix')
    let OSNAME = 'unix'
  endif
  if has('mac')
    let OSNAME = 'mac'
    let BROWSER = 'safari'
  endif

  let curr_file = expand('%:p')
  call system('markdown ' . curr_file . ' > ' . curr_file . '.html')

  if OSNAME == 'unix' && BROWSER == 'google-chrome'
    let chrome_wid = system("xdotool search --name '". curr_file . ".html - Google Chrome'")
    if !chrome_wid
      "sleep 300m
      call system('see ' . curr_file . '.html & > /dev/null &')
    else
      let curr_wid = system('xdotool getwindowfocus')
      call system('xdotool windowmap ' . chrome_wid)
      call system('xdotool windowactivate ' . chrome_wid)
      call system("xdotool key 'ctrl+r'")
      call system('xdotool windowactivate ' . curr_wid)
    endif
    "sleep 700m
  endif

  if OSNAME == 'mac' && BROWSER == 'safari'
    call system('open -g ' . curr_file . '.html')
  endif

  if REMOVE_TEMP_FILE
    call system('rm ' . curr_file . '.html')
  endif
endfunction


"Maps Ctrl-p to Vim_Markdown_Preview()
autocmd Filetype markdown,md map <buffer> <C-p> :call Vim_Markdown_Preview()<CR>

"Maps Ctrl-p to Vim_Markdown_Preview_Local() - saves the html file locally and
"displays images in path
"autocmd Filetype markdown,md map <buffer> <C-p> :call Vim_Markdown_Preview_Local()<CR>

"Automatically call Vim_Markdown_Preview() on buffer write
"autocmd BufWritePost *.markdown,*.md :call Vim_Markdown_Preview()