soywiki 0.1.5 → 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.markdown +4 -3
- data/Rakefile +4 -0
- data/lib/soywiki.rb +1 -1
- data/lib/soywiki.vim +44 -15
- metadata +2 -2
    
        data/README.markdown
    CHANGED
    
    | @@ -157,9 +157,10 @@ commands: | |
| 157 157 | 
             
            * `CTRL-k` and `CTRL-j` move the cursor directly to the next or previous WikiLink on the page
         | 
| 158 158 | 
             
            * `ENTER` follows the WikiLink under the cursor
         | 
| 159 159 | 
             
            * `,f` follows the first WikiLink after the cursor
         | 
| 160 | 
            -
            * `CTRL-l` opens a WikiLink in a vertical split window
         | 
| 161 | 
            -
             | 
| 162 | 
            -
            *  | 
| 160 | 
            +
            * `CTRL-l` opens a WikiLink in a vertical split window; press again
         | 
| 161 | 
            +
            while the cursor is on the top line to close the new window 
         | 
| 162 | 
            +
            * `CTRL-h` does the same, but in a regular split window
         | 
| 163 | 
            +
            * `q` closes a split window 
         | 
| 163 164 |  | 
| 164 165 | 
             
            These key mappings may not be very mnemonic, but they are easy to
         | 
| 165 166 | 
             
            memorize through muscle memory and were chosen to keep the hands
         | 
    
        data/Rakefile
    CHANGED
    
    | @@ -9,6 +9,10 @@ require 'soywiki' | |
| 9 9 |  | 
| 10 10 | 
             
            Bundler::GemHelper.install_tasks
         | 
| 11 11 |  | 
| 12 | 
            +
             | 
| 13 | 
            +
            desc "release and build and push new website"
         | 
| 14 | 
            +
            task :push => [:release, :build_webpage]
         | 
| 15 | 
            +
             | 
| 12 16 | 
             
            desc "build and push website"
         | 
| 13 17 | 
             
            task :web => :build_webpage do
         | 
| 14 18 | 
             
              `scp website/soywiki.html zoe2@instantwatcher.com:~/danielchoi.com/public/software/`
         | 
    
        data/lib/soywiki.rb
    CHANGED
    
    
    
        data/lib/soywiki.vim
    CHANGED
    
    | @@ -91,7 +91,12 @@ endfunc | |
| 91 91 |  | 
| 92 92 | 
             
            func! s:list_pages()
         | 
| 93 93 | 
             
              let s:search_for_link = ""
         | 
| 94 | 
            -
               | 
| 94 | 
            +
              let pages = s:get_page_list()
         | 
| 95 | 
            +
              if len(pages) == 0
         | 
| 96 | 
            +
                echom "There are no wiki pages yet but this one."
         | 
| 97 | 
            +
              else
         | 
| 98 | 
            +
                call s:page_list_window(pages, 'select-page', "Select page: ")
         | 
| 99 | 
            +
              end
         | 
| 95 100 | 
             
            endfunc
         | 
| 96 101 |  | 
| 97 102 | 
             
            func! s:trim_link(link)
         | 
| @@ -133,6 +138,13 @@ func! s:follow_link_under_cursor(split) | |
| 133 138 | 
             
              if link == ""
         | 
| 134 139 | 
             
                echom link . " is not a wiki link"
         | 
| 135 140 | 
             
                return ""
         | 
| 141 | 
            +
              elseif line('.') == 1
         | 
| 142 | 
            +
                " SPECIAL CASE
         | 
| 143 | 
            +
                " close window
         | 
| 144 | 
            +
                if winnr('$') > 1
         | 
| 145 | 
            +
                  close
         | 
| 146 | 
            +
                endif
         | 
| 147 | 
            +
                return
         | 
| 136 148 | 
             
              else
         | 
| 137 149 | 
             
                call s:load_page(link, a:split)
         | 
| 138 150 | 
             
              endif
         | 
| @@ -148,12 +160,19 @@ func! s:find_next_wiki_link(backward) | |
| 148 160 | 
             
              return s:link_under_cursor()
         | 
| 149 161 | 
             
            endfunc
         | 
| 150 162 |  | 
| 163 | 
            +
            " -------------------------------------------------------------------------------- 
         | 
| 164 | 
            +
            " LOAD PAGE
         | 
| 165 | 
            +
             | 
| 151 166 | 
             
            func! s:load_page(page, split)
         | 
| 152 167 | 
             
              if (s:is_wiki_page())
         | 
| 153 168 | 
             
                write
         | 
| 154 169 | 
             
              endif
         | 
| 155 170 | 
             
              let file = s:pagetitle2file(a:page)
         | 
| 156 171 | 
             
              let title = s:filename2pagetitle(a:page)
         | 
| 172 | 
            +
              if bufwinnr(file) != -1
         | 
| 173 | 
            +
                exec bufwinnr(file)."wincmd w"    
         | 
| 174 | 
            +
                return
         | 
| 175 | 
            +
              endif
         | 
| 157 176 | 
             
              if (!filereadable(file)) 
         | 
| 158 177 | 
             
                " create the file
         | 
| 159 178 | 
             
                let namespace = s:namespace_of_title(a:page)
         | 
| @@ -164,17 +183,17 @@ func! s:load_page(page, split) | |
| 164 183 | 
             
                call writefile([title, '', ''], file) 
         | 
| 165 184 | 
             
              endif
         | 
| 166 185 | 
             
              if (a:split == 2) 
         | 
| 167 | 
            -
                exec " | 
| 168 | 
            -
               | 
| 169 | 
            -
                exec " | 
| 170 | 
            -
               | 
| 171 | 
            -
             | 
| 172 | 
            -
                wincmd p 
         | 
| 173 | 
            -
                close
         | 
| 186 | 
            +
                exec "rightbelow vsplit ". file
         | 
| 187 | 
            +
              elseif (a:split == 1)
         | 
| 188 | 
            +
                exec "rightbelow split ". file
         | 
| 189 | 
            +
              elseif (a:split == 0) 
         | 
| 190 | 
            +
                exec "e ".file
         | 
| 174 191 | 
             
              endif
         | 
| 175 | 
            -
              if  | 
| 192 | 
            +
              if s:search_for_link != ''
         | 
| 176 193 | 
             
                let res = search(s:search_for_link, 'cw')
         | 
| 177 194 | 
             
                let s:search_for_link = ''
         | 
| 195 | 
            +
              else 
         | 
| 196 | 
            +
                normal gg
         | 
| 178 197 | 
             
              endif
         | 
| 179 198 | 
             
            endfunc
         | 
| 180 199 |  | 
| @@ -252,19 +271,29 @@ endfunc | |
| 252 271 | 
             
            " -------------------------------------------------------------------------------
         | 
| 253 272 | 
             
            " select Page
         | 
| 254 273 |  | 
| 274 | 
            +
            func! s:omit_this_page(page_list)
         | 
| 275 | 
            +
              if exists("s:return_to_bufname")
         | 
| 276 | 
            +
                let page_list = filter( a:page_list,  'v:val != "'.s:return_to_bufname.'"')
         | 
| 277 | 
            +
                return page_list
         | 
| 278 | 
            +
              else
         | 
| 279 | 
            +
                return a:page_list
         | 
| 280 | 
            +
              endif
         | 
| 281 | 
            +
            endfunc
         | 
| 282 | 
            +
             | 
| 255 283 | 
             
            " This function both sets a script variable and returns the value.
         | 
| 256 284 | 
             
            func! s:get_page_list()
         | 
| 257 285 | 
             
              " no file current in buffer
         | 
| 258 | 
            -
              if len(bufname(' | 
| 286 | 
            +
              if len(bufname('')) == 0
         | 
| 259 287 | 
             
                return split(system(s:ls_command), "\n")
         | 
| 260 288 | 
             
              elseif bufname('') == 'pages-linking-in'
         | 
| 261 289 | 
             
                " this needs refactoring to rely less on state
         | 
| 262 290 | 
             
                return s:pages_linking_in
         | 
| 263 291 | 
             
              else
         | 
| 264 | 
            -
                return split(system(s:ls_command | 
| 292 | 
            +
                return s:omit_this_page(split(system(s:ls_command), "\n"))
         | 
| 265 293 | 
             
              endif
         | 
| 266 294 | 
             
            endfunction
         | 
| 267 295 |  | 
| 296 | 
            +
             | 
| 268 297 | 
             
            func! s:pages_in_this_namespace(pages)
         | 
| 269 298 | 
             
              let namespace = s:page_namespace()
         | 
| 270 299 | 
             
              let pages = filter( a:pages,  'v:val =~ "^' . namespace . '\."')
         | 
| @@ -297,6 +326,7 @@ endfunc | |
| 297 326 | 
             
            function! s:page_list_window(page_match_list, buffer_name, prompt)
         | 
| 298 327 | 
             
              " remember the original window 
         | 
| 299 328 | 
             
              let s:return_to_winnr = winnr()
         | 
| 329 | 
            +
              let s:return_to_bufname = s:filename2pagetitle(bufname(''))
         | 
| 300 330 | 
             
              let s:matching_pages = a:page_match_list
         | 
| 301 331 | 
             
              exec "topleft split ".a:buffer_name
         | 
| 302 332 | 
             
              setlocal completefunc=CompletePageTitle 
         | 
| @@ -426,7 +456,7 @@ func! s:extract(...) range | |
| 426 456 | 
             
                  endif
         | 
| 427 457 | 
             
                  call writefile([page_title, '', ''], file) 
         | 
| 428 458 | 
             
                endif
         | 
| 429 | 
            -
                exec " | 
| 459 | 
            +
                exec "rightbelow vsplit ".file
         | 
| 430 460 | 
             
              else
         | 
| 431 461 | 
             
                let targetWindow = bufwinnr(bufnr(file))
         | 
| 432 462 | 
             
                exe targetWindow."wincmd w"
         | 
| @@ -478,7 +508,7 @@ func! s:expand(seamless, vertical) | |
| 478 508 | 
             
                let res = system(s:expand_command . " seamful " . bufname('%'))
         | 
| 479 509 | 
             
              endif
         | 
| 480 510 | 
             
              if a:vertical
         | 
| 481 | 
            -
                 | 
| 511 | 
            +
                rightbelow vnew 
         | 
| 482 512 | 
             
              else
         | 
| 483 513 | 
             
                new 
         | 
| 484 514 | 
             
              endif
         | 
| @@ -511,7 +541,6 @@ func! s:global_mappings() | |
| 511 541 | 
             
              noremap  <leader>M :call <SID>list_pages_linking_in()<CR>
         | 
| 512 542 | 
             
              noremap <silent> <leader>o :call <SID>open_href()<cr> 
         | 
| 513 543 | 
             
              nnoremap <silent> q :close<cr>
         | 
| 514 | 
            -
              nnoremap <silent> <C-h> :close<cr>
         | 
| 515 544 |  | 
| 516 545 | 
             
              " reflow text
         | 
| 517 546 | 
             
              nnoremap \ gwap 
         | 
| @@ -539,7 +568,7 @@ func! s:prep_buffer() | |
| 539 568 | 
             
                set textwidth=72
         | 
| 540 569 | 
             
                nnoremap <buffer> <cr> :call <SID>follow_link_under_cursor(0)<cr> 
         | 
| 541 570 | 
             
                nnoremap <buffer> <c-l> :call <SID>follow_link_under_cursor(2)<cr> 
         | 
| 542 | 
            -
                nnoremap <buffer> <c- | 
| 571 | 
            +
                nnoremap <buffer> <c-h> :call <SID>follow_link_under_cursor(1)<cr> 
         | 
| 543 572 | 
             
                noremap <buffer> <leader>f :call <SID>follow_link(0)<CR>
         | 
| 544 573 | 
             
                noremap <buffer> <c-j> :call <SID>find_next_wiki_link(0)<CR>
         | 
| 545 574 | 
             
                noremap <buffer> <c-k> :call <SID>find_next_wiki_link(1)<CR>
         |