Compare commits

...

No commits in common. 'master' and 'gh-pages' have entirely different histories.

8 changed files with 527 additions and 310 deletions
Split View
  1. +0
    -93
      README.markdown
  2. +0
    -55
      doc/makecols.txt
  3. +138
    -0
      index.html
  4. +17
    -0
      javascripts/scale.fix.js
  5. +1
    -0
      params.json
  6. +0
    -162
      plugin/makecols.vim
  7. +116
    -0
      stylesheets/github-light.css
  8. +255
    -0
      stylesheets/styles.css

+ 0
- 93
README.markdown View File

@ -1,93 +0,0 @@
makecols
========
Makecols.vim is intended to easily convert lists into column based
layouts.
The easiest way to explain is with examples.
Say you have a list of things (in this case numbers)
1
2
3
4
5
6
7
8
9
10
and you’d like it to look neater
1 2
3 4
5 6
7 8
9 10
[That’s pretty neat](https://www.youtube.com/watch?v=Hm3JodBR-vs&feature=youtu.be&t=25s)
Usage
-----
Here’s how you do it.
Start with a list like above.
1
2
3
4
5
6
7
8
9
10
Then visual select the rows you’d like to make neat.
Then type ```mc``` and viola! The data has automagically been reconstructed
into a satisfactory arrangement.
1 2
3 4
5 6
7 8
9 10
You are now free of the worry caused by inadequate single column list layouts. Carry on.
Additionally, you can do things like ```3mcv``` which would make 3 columns, and arrange to a vertical sorting like so:
1 5 9
2 6 10
3 7
4 8
Installation
------------
If you don't have a preferred installation method, I recommend
installing [pathogen.vim](https://github.com/tpope/vim-pathogen), and
then simply copy and paste:
cd ~/.vim/bundle
git clone git://github.com/leothelocust/vim-makecols.git
Once help tags have been generated, you can view the manual with
`:help makecols`.
Contributing
------------
Just pull, make some changes, and create a merge request.
License
-------
Copyright (c) Levi Olson. Distribution under the same terms as Vim itself.
See `:help license`.

+ 0
- 55
doc/makecols.txt View File

@ -1,55 +0,0 @@
*makecols.txt* Plugin for Converting Lists to Columns
Author: Levi Olson <http://leviolson.com/>
License: Same terms as Vim itself (see |license|)
This plugin is only available if 'compatible' is not set.
INTRODUCTION *makecols*
This plugin is a tool for converting lists into columns.
Details follow on the exact semantics, but first, consider the following
examples. It is assumed that you have selected the "Old text" column.
Old text Command New text ~
1 3mcv 1 4 7
2 2 5
3 3 6
4
5 5mc 1 2 3 4 5
6 6 7
7
While a few features of this plugin will work in older versions of Vim,
Vim 7 is recommended for full functionality.
MAPPINGS *makecols-mappings*
Make columns is *mc* . This can be prefaced with the number of columns
to make and suffixed with nothing, *v* , or *h* . However, the default is
horizontal, so specifying *h* would be redundant.
TARGETS *makecols-targets*
The |mc| |mch| and |mcv| commands all take a *linewise* visual selection.
They can be prefaced with a number to specify the number of columns the
output should generate.
REPLACEMENTS *makecols-replacements*
All highlighted text will be removed and replaced by the generated output.
CUSTOMIZING *makecols-customizing*
One can use a global variable for globally available replacements.
>
let g:makecols_cols = 5 " default no of cols to 5
let g:makecols_orientation = "horz" " default sorting [horz|vert]
<
ISSUES *makecols-issues*
Vim could potentially get confused when deleting/changing occurs at the very
end of the line. Please report any repeatable instances of this.
vim:tw=78:ts=8:ft=help:norl:

+ 138
- 0
index.html View File

@ -0,0 +1,138 @@
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<title>Vim-makecols by leothelocust</title>
<link rel="stylesheet" href="stylesheets/styles.css">
<link rel="stylesheet" href="stylesheets/github-light.css">
<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1>Vim-makecols</h1>
<p>makecols.vim: converting lists to columns made simple</p>
<p class="view"><a href="https://github.com/leothelocust/vim-makecols">View the Project on GitHub <small>leothelocust/vim-makecols</small></a></p>
<ul>
<li><a href="https://github.com/leothelocust/vim-makecols/zipball/master">Download <strong>ZIP File</strong></a></li>
<li><a href="https://github.com/leothelocust/vim-makecols/tarball/master">Download <strong>TAR Ball</strong></a></li>
<li><a href="https://github.com/leothelocust/vim-makecols">View On <strong>GitHub</strong></a></li>
</ul>
</header>
<section>
<h1>
<a id="makecols" class="anchor" href="#makecols" aria-hidden="true"><span class="octicon octicon-link"></span></a>makecols</h1>
<p>Makecols.vim is intended to easily convert lists into column based
layouts.</p>
<p>The easiest way to explain is with examples.</p>
<p>Say you have a list of things (in this case numbers)</p>
<pre><code>1
2
3
4
5
6
7
8
9
10
</code></pre>
<p>and you’d like it to look neater</p>
<pre><code>1 2
3 4
5 6
7 8
9 10
</code></pre>
<p><a href="https://www.youtube.com/watch?v=Hm3JodBR-vs&amp;feature=youtu.be&amp;t=25s">That’s pretty neat</a></p>
<h2>
<a id="usage" class="anchor" href="#usage" aria-hidden="true"><span class="octicon octicon-link"></span></a>Usage</h2>
<p>Here’s how you do it.</p>
<p>Start with a list like above.</p>
<pre><code>1
2
3
4
5
6
7
8
9
10
</code></pre>
<p>Then visual select the rows you’d like to make neat.</p>
<p>Then type <code>mc</code> and viola! The data has automagically been reconstructed
into a satisfactory arrangement.</p>
<pre><code>1 2
3 4
5 6
7 8
9 10
</code></pre>
<p>You are now free of the worry caused by inadequate single column list layouts. Carry on.</p>
<p>Additionally, you can do things like <code>3mcv</code> which would make 3 columns, and arrange to a vertical sorting like so:</p>
<pre><code>1 5 9
2 6 10
3 7
4 8
</code></pre>
<h2>
<a id="installation" class="anchor" href="#installation" aria-hidden="true"><span class="octicon octicon-link"></span></a>Installation</h2>
<p>If you don't have a preferred installation method, I recommend
installing <a href="https://github.com/tpope/vim-pathogen">pathogen.vim</a>, and
then simply copy and paste:</p>
<pre><code>cd ~/.vim/bundle
git clone git://github.com/leothelocust/vim-makecols.git
</code></pre>
<p>Once help tags have been generated, you can view the manual with
<code>:help makecols</code>.</p>
<h2>
<a id="contributing" class="anchor" href="#contributing" aria-hidden="true"><span class="octicon octicon-link"></span></a>Contributing</h2>
<p>Just pull, make some changes, and create a merge request.</p>
<h2>
<a id="license" class="anchor" href="#license" aria-hidden="true"><span class="octicon octicon-link"></span></a>License</h2>
<p>Copyright (c) Levi Olson. Distribution under the same terms as Vim itself.
See <code>:help license</code>.</p>
</section>
<footer>
<p>This project is maintained by <a href="https://github.com/leothelocust">leothelocust</a></p>
<p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
<script src="javascripts/scale.fix.js"></script>
</body>
</html>

+ 17
- 0
javascripts/scale.fix.js View File

@ -0,0 +1,17 @@
var metas = document.getElementsByTagName('meta');
var i;
if (navigator.userAgent.match(/iPhone/i)) {
for (i=0; i<metas.length; i++) {
if (metas[i].name == "viewport") {
metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
}
}
document.addEventListener("gesturestart", gestureStart, false);
}
function gestureStart() {
for (i=0; i<metas.length; i++) {
if (metas[i].name == "viewport") {
metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
}
}
}

+ 1
- 0
params.json View File

@ -0,0 +1 @@
{"name":"Vim-makecols","tagline":"makecols.vim: converting lists to columns made simple","body":"makecols\r\n========\r\n\r\nMakecols.vim is intended to easily convert lists into column based\r\nlayouts.\r\n\r\nThe easiest way to explain is with examples.\r\n\r\nSay you have a list of things (in this case numbers)\r\n\r\n 1\r\n 2\r\n 3\r\n 4\r\n 5\r\n 6\r\n 7\r\n 8\r\n 9\r\n 10\r\n\r\nand you’d like it to look neater\r\n\r\n 1 2\r\n 3 4\r\n 5 6\r\n 7 8\r\n 9 10\r\n\r\n[That’s pretty neat](https://www.youtube.com/watch?v=Hm3JodBR-vs&feature=youtu.be&t=25s)\r\n\r\n\r\nUsage\r\n-----\r\nHere’s how you do it.\r\n\r\nStart with a list like above.\r\n \r\n 1\r\n 2\r\n 3\r\n 4\r\n 5\r\n 6\r\n 7\r\n 8\r\n 9\r\n 10\r\n\r\nThen visual select the rows you’d like to make neat.\r\n\r\nThen type ```mc``` and viola! The data has automagically been reconstructed\r\ninto a satisfactory arrangement.\r\n\r\n\r\n 1 2\r\n 3 4\r\n 5 6\r\n 7 8\r\n 9 10\r\n\r\nYou are now free of the worry caused by inadequate single column list layouts. Carry on.\r\n\r\nAdditionally, you can do things like ```3mcv``` which would make 3 columns, and arrange to a vertical sorting like so:\r\n\r\n 1 5 9\r\n 2 6 10\r\n 3 7\r\n 4 8\r\n\r\nInstallation\r\n------------\r\n\r\nIf you don't have a preferred installation method, I recommend\r\ninstalling [pathogen.vim](https://github.com/tpope/vim-pathogen), and\r\nthen simply copy and paste:\r\n\r\n cd ~/.vim/bundle\r\n git clone git://github.com/leothelocust/vim-makecols.git\r\n\r\nOnce help tags have been generated, you can view the manual with\r\n`:help makecols`.\r\n\r\nContributing\r\n------------\r\n\r\nJust pull, make some changes, and create a merge request.\r\n\r\nLicense\r\n-------\r\n\r\nCopyright (c) Levi Olson. Distribution under the same terms as Vim itself.\r\nSee `:help license`.\r\n","google":"","note":"Don't delete this file! It's used internally to help with page regeneration."}

+ 0
- 162
plugin/makecols.vim View File

@ -1,162 +0,0 @@
" makecols.vim - Makecolumns
" Author: Levi Olson <http://leviolson.com/>
" Version: 1.0
if !exists("g:makecols_orientation") || ! g:makecols_orientation
let g:makecols_orientation = "horz"
endif
if !exists("g:makecols_cols") || ! g:makecols_cols
let g:makecols_cols = 5
endif
function! s:beep()
exe "norm! \<Esc>"
return ""
endfunction
function! s:get_visual_selection()
let [lnum1, col1] = getpos("'<")[1:2]
let [lnum2, col2] = getpos("'>")[1:2]
let lines = getline(lnum1, lnum2)
" let lines[-1] = lines[-1][: col2 - (&selection == 'inclusive' ? 1 : 2)]
" let lines[0] = lines[0][col1 - 1:]
" Remove the current selection
execute lnum1 . "," . lnum2 . "delete"
let selection = join(lines, ",")
return selection
endfunction
function! s:convert_selection()
let new_string = ""
if g:makecols_orientation == "horz"
let new_string = s:convert_selection_horz()
else
let new_string = s:convert_selection_vert()
endif
return new_string
endfunction
function! s:convert_selection_horz()
" Setup some variables
let c = 0
let new_string = ""
let selection = s:get_visual_selection()
let old_selection = split(selection, ",")
let @z = ""
" For Loopage Goes here
for i in old_selection
if (c == 0)
" If first selected line
let new_string = join([new_string, i], "")
else
if (c % g:makecols_cols)
" If regular column
let new_string = join([new_string, i], "\t")
else
" If end of row
let new_string = join([new_string, i], "\n")
endif
endif
let c += 1
endfor
return join([new_string, ""], "\n")
endfunction
function! s:convert_selection_vert()
" Setup some variables
let cols = g:makecols_cols
let selection = s:get_visual_selection()
let old_selection = split(selection, ",")
let lines = len(old_selection) * 1.0
let rows = (lines / g:makecols_cols) * 1.0
let rows = float2nr(ceil(rows))
let @z = ""
let new_string = ""
let row = 0
let col = 0
while row < rows
let pos = row
echom "ROW: " . row . " COL: " . col . " POS: " . pos
if (row == 0 && col == 0)
let content = get(old_selection, 0, "")
let new_string = join([new_string, content], "")
else
let content = get(old_selection, row, "")
let new_string = join([new_string, content], "\n")
endif
let col = 0
while col < cols - 1
let col += 1
let pos = pos + rows
echom "ROW: " . row . " COL: " . col . " POS: " . pos
let content = get(old_selection, pos, "")
let new_string = join([new_string, content], "\t")
endwhile
let row += 1
endwhile
return join([new_string, ""], "\n")
endfunction
function! s:replace_selected_text(converted_text)
let @z = a:converted_text
execute "normal! \"zP"
" echom "Just replaced the selection."
let @z = ""
return ""
endfunction
function! s:makecols(orient, cols) range
" backup the globals
let default_orientation = g:makecols_orientation
let default_cols = g:makecols_cols
let g:makecols_orientation = a:orient
if (v:count > 0)
let g:makecols_cols = v:count
else
let g:makecols_cols = a:cols
endif
echom "Orient: " . g:makecols_orientation . ", No Cols: " . g:makecols_cols
let mode = visualmode()
if (mode !=# "V")
echo "You must be in linewise visual mode"
return s:beep()
endif
let converted_text = s:convert_selection()
let g:makecols_orientation = default_orientation
let g:makecols_cols = default_cols
return s:replace_selected_text(converted_text)
endfunction
vnoremap <silent> mc :<C-U>call <SID>makecols(g:makecols_orientation, g:makecols_cols)<CR>
vnoremap <silent> mch :<C-U>call <SID>makecols("horz", g:makecols_cols)<CR>
vnoremap <silent> mcv :<C-U>call <SID>makecols("vert", g:makecols_cols)<CR>
" vim:set ft=vim sw=4 sts=4 et:

+ 116
- 0
stylesheets/github-light.css View File

@ -0,0 +1,116 @@
/*
Copyright 2014 GitHub Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
.pl-c /* comment */ {
color: #969896;
}
.pl-c1 /* constant, markup.raw, meta.diff.header, meta.module-reference, meta.property-name, support, support.constant, support.variable, variable.other.constant */,
.pl-s .pl-v /* string variable */ {
color: #0086b3;
}
.pl-e /* entity */,
.pl-en /* entity.name */ {
color: #795da3;
}
.pl-s .pl-s1 /* string source */,
.pl-smi /* storage.modifier.import, storage.modifier.package, storage.type.java, variable.other, variable.parameter.function */ {
color: #333;
}
.pl-ent /* entity.name.tag */ {
color: #63a35c;
}
.pl-k /* keyword, storage, storage.type */ {
color: #a71d5d;
}
.pl-pds /* punctuation.definition.string, string.regexp.character-class */,
.pl-s /* string */,
.pl-s .pl-pse .pl-s1 /* string punctuation.section.embedded source */,
.pl-sr /* string.regexp */,
.pl-sr .pl-cce /* string.regexp constant.character.escape */,
.pl-sr .pl-sra /* string.regexp string.regexp.arbitrary-repitition */,
.pl-sr .pl-sre /* string.regexp source.ruby.embedded */ {
color: #183691;
}
.pl-v /* variable */ {
color: #ed6a43;
}
.pl-id /* invalid.deprecated */ {
color: #b52a1d;
}
.pl-ii /* invalid.illegal */ {
background-color: #b52a1d;
color: #f8f8f8;
}
.pl-sr .pl-cce /* string.regexp constant.character.escape */ {
color: #63a35c;
font-weight: bold;
}
.pl-ml /* markup.list */ {
color: #693a17;
}
.pl-mh /* markup.heading */,
.pl-mh .pl-en /* markup.heading entity.name */,
.pl-ms /* meta.separator */ {
color: #1d3e81;
font-weight: bold;
}
.pl-mq /* markup.quote */ {
color: #008080;
}
.pl-mi /* markup.italic */ {
color: #333;
font-style: italic;
}
.pl-mb /* markup.bold */ {
color: #333;
font-weight: bold;
}
.pl-md /* markup.deleted, meta.diff.header.from-file */ {
background-color: #ffecec;
color: #bd2c00;
}
.pl-mi1 /* markup.inserted, meta.diff.header.to-file */ {
background-color: #eaffea;
color: #55a532;
}
.pl-mdr /* meta.diff.range */ {
color: #795da3;
font-weight: bold;
}
.pl-mo /* meta.output */ {
color: #1d3e81;
}

+ 255
- 0
stylesheets/styles.css View File

@ -0,0 +1,255 @@
@import url(https://fonts.googleapis.com/css?family=Lato:300italic,700italic,300,700);
body {
padding:50px;
font:14px/1.5 Lato, "Helvetica Neue", Helvetica, Arial, sans-serif;
color:#777;
font-weight:300;
}
h1, h2, h3, h4, h5, h6 {
color:#222;
margin:0 0 20px;
}
p, ul, ol, table, pre, dl {
margin:0 0 20px;
}
h1, h2, h3 {
line-height:1.1;
}
h1 {
font-size:28px;
}
h2 {
color:#393939;
}
h3, h4, h5, h6 {
color:#494949;
}
a {
color:#39c;
font-weight:400;
text-decoration:none;
}
a small {
font-size:11px;
color:#777;
margin-top:-0.6em;
display:block;
}
.wrapper {
width:860px;
margin:0 auto;
}
blockquote {
border-left:1px solid #e5e5e5;
margin:0;
padding:0 0 0 20px;
font-style:italic;
}
code, pre {
font-family:Monaco, Bitstream Vera Sans Mono, Lucida Console, Terminal;
color:#333;
font-size:12px;
}
pre {
padding:8px 15px;
background: #f8f8f8;
border-radius:5px;
border:1px solid #e5e5e5;
overflow-x: auto;
}
table {
width:100%;
border-collapse:collapse;
}
th, td {
text-align:left;
padding:5px 10px;
border-bottom:1px solid #e5e5e5;
}
dt {
color:#444;
font-weight:700;
}
th {
color:#444;
}
img {
max-width:100%;
}
header {
width:270px;
float:left;
position:fixed;
}
header ul {
list-style:none;
height:40px;
padding:0;
background: #eee;
background: -moz-linear-gradient(top, #f8f8f8 0%, #dddddd 100%);
background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#f8f8f8), color-stop(100%,#dddddd));
background: -webkit-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
background: -o-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
background: -ms-linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
background: linear-gradient(top, #f8f8f8 0%,#dddddd 100%);
border-radius:5px;
border:1px solid #d2d2d2;
box-shadow:inset #fff 0 1px 0, inset rgba(0,0,0,0.03) 0 -1px 0;
width:270px;
}
header li {
width:89px;
float:left;
border-right:1px solid #d2d2d2;
height:40px;
}
header ul a {
line-height:1;
font-size:11px;
color:#999;
display:block;
text-align:center;
padding-top:6px;
height:40px;
}
strong {
color:#222;
font-weight:700;
}
header ul li + li {
width:88px;
border-left:1px solid #fff;
}
header ul li + li + li {
border-right:none;
width:89px;
}
header ul a strong {
font-size:14px;
display:block;
color:#222;
}
section {
width:500px;
float:right;
padding-bottom:50px;
}
small {
font-size:11px;
}
hr {
border:0;
background:#e5e5e5;
height:1px;
margin:0 0 20px;
}
footer {
width:270px;
float:left;
position:fixed;
bottom:50px;
}
@media print, screen and (max-width: 960px) {
div.wrapper {
width:auto;
margin:0;
}
header, section, footer {
float:none;
position:static;
width:auto;
}
header {
padding-right:320px;
}
section {
border:1px solid #e5e5e5;
border-width:1px 0;
padding:20px 0;
margin:0 0 20px;
}
header a small {
display:inline;
}
header ul {
position:absolute;
right:50px;
top:52px;
}
}
@media print, screen and (max-width: 720px) {
body {
word-wrap:break-word;
}
header {
padding:0;
}
header ul, header p.view {
position:static;
}
pre, code {
word-wrap:normal;
}
}
@media print, screen and (max-width: 480px) {
body {
padding:15px;
}
header ul {
display:none;
}
}
@media print {
body {
padding:0.4in;
font-size:12pt;
color:#444;
}
}

Loading…
Cancel
Save