summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-28 20:53:08 +0200
committerBram Moolenaar <Bram@vim.org>2016-03-28 20:53:08 +0200
commit2946d0236dc9e23ec0050feacdb959b9ae5672a8 (patch)
tree7a0ab804ca49cfc4aca311a4d0896b13ac22d77d
parente934e8f5c1c5c64411d98583ecbcf89e5ad01073 (diff)
downloadvim-git-2946d0236dc9e23ec0050feacdb959b9ae5672a8.tar.gz
patch 7.4.1673v7.4.1673
Problem: The justify plugin has to be copied or sourced to be used. Solution: Turn it into a package.
-rw-r--r--Filelist5
-rw-r--r--runtime/macros/README.txt14
-rw-r--r--runtime/macros/justify.vim319
-rw-r--r--runtime/pack/dist/opt/justify/plugin/justify.vim316
-rw-r--r--src/version.c2
5 files changed, 333 insertions, 323 deletions
diff --git a/Filelist b/Filelist
index d95c8f414..cd55fe158 100644
--- a/Filelist
+++ b/Filelist
@@ -483,7 +483,6 @@ RT_ALL = \
runtime/ftoff.vim \
runtime/gvimrc_example.vim \
runtime/macros/README.txt \
- runtime/macros/dvorak \
runtime/macros/editexisting.vim \
runtime/macros/hanoi/click.me \
runtime/macros/hanoi/hanoi.vim \
@@ -524,6 +523,10 @@ RT_ALL = \
runtime/tutor/tutor \
runtime/tutor/tutor.vim \
runtime/vimrc_example.vim \
+ runtime/pack/dist/opt/dvorak/plugin/dvorak.vim \
+ runtime/pack/dist/opt/dvorak/dvorak/enable.vim \
+ runtime/pack/dist/opt/dvorak/dvorak/disable.vim \
+ runtime/pack/dist/opt/justify/plugin/justify.vim \
runtime/pack/dist/opt/matchit/plugin/matchit.vim \
runtime/pack/dist/opt/matchit/doc/matchit.txt \
runtime/pack/dist/opt/matchit/doc/tags \
diff --git a/runtime/macros/README.txt b/runtime/macros/README.txt
index e74913483..884fe5351 100644
--- a/runtime/macros/README.txt
+++ b/runtime/macros/README.txt
@@ -11,8 +11,6 @@ urm Macros that simulate a simple computer: "Universal Register Machine"
The other files contain some handy utilities. They also serve as examples for
how to use Vi and Vim functionality.
-justify.vim user function for justifying text
-
less.sh + less.vim make Vim work like less (or more)
shellmenu.vim menus for editing shell scripts in the GUI version
@@ -25,10 +23,14 @@ editexisting.vim when editing a file that is already edited with
This one is only for Unix.
file_select.vim macros that make a handy file selector
+The Dvorak support has been moved to an optional package. To load it put this
+line in your vimrc file:
+ packadd! dvorak
+
+The support for justifying test has been moved to an optional package. To
+load it put this line in your vimrc file:
+ packadd! justify
+
The matchit plugin has been moved to an optional package. To load it put this
line in your vimrc file:
packadd! matchit
-
-The Dvorak supported has been moved to an optional package. To load it put
-this line in your vimrc file:
- packadd! dvorak
diff --git a/runtime/macros/justify.vim b/runtime/macros/justify.vim
index 4ef3bf95f..011a91140 100644
--- a/runtime/macros/justify.vim
+++ b/runtime/macros/justify.vim
@@ -1,316 +1,3 @@
-" Function to left and right align text.
-"
-" Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk>
-" Created: 980806 14:13 (or around that time anyway)
-" Revised: 001103 00:36 (See "Revisions" below)
-
-
-" function Justify( [ textwidth [, maxspaces [, indent] ] ] )
-"
-" Justify() will left and right align a line by filling in an
-" appropriate amount of spaces. Extra spaces are added to existing
-" spaces starting from the right side of the line. As an example, the
-" following documentation has been justified.
-"
-" The function takes the following arguments:
-
-" textwidth argument
-" ------------------
-" If not specified, the value of the 'textwidth' option is used. If
-" 'textwidth' is zero a value of 80 is used.
-"
-" Additionally the arguments 'tw' and '' are accepted. The value of
-" 'textwidth' will be used. These are handy, if you just want to specify
-" the maxspaces argument.
-
-" maxspaces argument
-" ------------------
-" If specified, alignment will only be done, if the longest space run
-" after alignment is no longer than maxspaces.
-"
-" An argument of '' is accepted, should the user like to specify all
-" arguments.
-"
-" To aid user defined commands, negative values are accepted aswell.
-" Using a negative value specifies the default behaviour: any length of
-" space runs will be used to justify the text.
-
-" indent argument
-" ---------------
-" This argument specifies how a line should be indented. The default is
-" to keep the current indentation.
-"
-" Negative values: Keep current amount of leading whitespace.
-" Positive values: Indent all lines with leading whitespace using this
-" amount of whitespace.
-"
-" Note that the value 0, needs to be quoted as a string. This value
-" leads to a left flushed text.
-"
-" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be
-" added. In this case, if the value of indent is positive, the amount of
-" whitespace to be added will be multiplied by the value of the
-" 'shiftwidth' and 'tabstop' settings. If these units are used, the
-" argument must be given as a string, eg. Justify('','','2sw').
-"
-" If the values of 'sw' or 'tw' are negative, they are treated as if
-" they were 0, which means that the text is flushed left. There is no
-" check if a negative number prefix is used to change the sign of a
-" negative 'sw' or 'ts' value.
-"
-" As with the other arguments, '' may be used to get the default
-" behaviour.
-
-
-" Notes:
-"
-" If the line, adjusted for space runs and leading/trailing whitespace,
-" is wider than the used textwidth, the line will be left untouched (no
-" whitespace removed). This should be equivalent to the behaviour of
-" :left, :right and :center.
-"
-" If the resulting line is shorter than the used textwidth it is left
-" untouched.
-"
-" All space runs in the line are truncated before the alignment is
-" carried out.
-"
-" If you have set 'noexpandtab', :retab! is used to replace space runs
-" with whitespace using the value of 'tabstop'. This should be
-" conformant with :left, :right and :center.
-"
-" If joinspaces is set, an extra space is added after '.', '?' and '!'.
-" If 'cpooptions' include 'j', extra space is only added after '.'.
-" (This may on occasion conflict with maxspaces.)
-
-
-" Related mappings:
-"
-" Mappings that will align text using the current text width, using at
-" most four spaces in a space run and keeping current indentation.
-nmap _j :%call Justify('tw',4)<CR>
-vmap _j :call Justify('tw',4)<CR>
-"
-" Mappings that will remove space runs and format lines (might be useful
-" prior to aligning the text).
-nmap ,gq :%s/\s\+/ /g<CR>gq1G
-vmap ,gq :s/\s\+/ /g<CR>gvgq
-
-
-" User defined command:
-"
-" The following is an ex command that works as a shortcut to the Justify
-" function. Arguments to Justify() can be added after the command.
-com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>)
-"
-" The following commands are all equivalent:
-"
-" 1. Simplest use of Justify():
-" :call Justify()
-" :Justify
-"
-" 2. The _j mapping above via the ex command:
-" :%Justify tw 4
-"
-" 3. Justify visualised text at 72nd column while indenting all
-" previously indented text two shiftwidths
-" :'<,'>call Justify(72,'','2sw')
-" :'<,'>Justify 72 -1 2sw
-"
-" This documentation has been justified using the following command:
-":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" /
-
-" Revisions:
-" 001103: If 'joinspaces' was set, calculations could be wrong.
-" Tabs at start of line could also lead to errors.
-" Use setline() instead of "exec 's/foo/bar/' - safer.
-" Cleaned up the code a bit.
-"
-" Todo: Convert maps to the new script specific form
-
-" Error function
-function! Justify_error(message)
- echohl Error
- echo "Justify([tw, [maxspaces [, indent]]]): " . a:message
- echohl None
-endfunction
-
-
-" Now for the real thing
-function! Justify(...) range
-
- if a:0 > 3
- call Justify_error("Too many arguments (max 3)")
- return 1
- endif
-
- " Set textwidth (accept 'tw' and '' as arguments)
- if a:0 >= 1
- if a:1 =~ '^\(tw\)\=$'
- let tw = &tw
- elseif a:1 =~ '^\d\+$'
- let tw = a:1
- else
- call Justify_error("tw must be a number (>0), '' or 'tw'")
- return 2
- endif
- else
- let tw = &tw
- endif
- if tw == 0
- let tw = 80
- endif
-
- " Set maximum number of spaces between WORDs
- if a:0 >= 2
- if a:2 == ''
- let maxspaces = tw
- elseif a:2 =~ '^-\d\+$'
- let maxspaces = tw
- elseif a:2 =~ '^\d\+$'
- let maxspaces = a:2
- else
- call Justify_error("maxspaces must be a number or ''")
- return 3
- endif
- else
- let maxspaces = tw
- endif
- if maxspaces <= 1
- call Justify_error("maxspaces should be larger than 1")
- return 4
- endif
-
- " Set the indentation style (accept sw and ts units)
- let indent_fix = ''
- if a:0 >= 3
- if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$'
- let indent = -1
- elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$'
- let indent = 0
- elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$'
- let indent = substitute(a:3, '\D', '', 'g')
- elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$'
- let indent = 1
- else
- call Justify_error("indent: a number with 'sw'/'ts' unit")
- return 5
- endif
- if indent >= 0
- while indent > 0
- let indent_fix = indent_fix . ' '
- let indent = indent - 1
- endwhile
- let indent_sw = 0
- if a:3 =~ '\(shiftwidth\|sw\)'
- let indent_sw = &sw
- elseif a:3 =~ '\(tabstop\|ts\)'
- let indent_sw = &ts
- endif
- let indent_fix2 = ''
- while indent_sw > 0
- let indent_fix2 = indent_fix2 . indent_fix
- let indent_sw = indent_sw - 1
- endwhile
- let indent_fix = indent_fix2
- endif
- else
- let indent = -1
- endif
-
- " Avoid substitution reports
- let save_report = &report
- set report=1000000
-
- " Check 'joinspaces' and 'cpo'
- if &js == 1
- if &cpo =~ 'j'
- let join_str = '\(\. \)'
- else
- let join_str = '\([.!?!] \)'
- endif
- endif
-
- let cur = a:firstline
- while cur <= a:lastline
-
- let str_orig = getline(cur)
- let save_et = &et
- set et
- exec cur . "retab"
- let &et = save_et
- let str = getline(cur)
-
- let indent_str = indent_fix
- let indent_n = strlen(indent_str)
- " Shall we remember the current indentation
- if indent < 0
- let indent_orig = matchstr(str_orig, '^\s*')
- if strlen(indent_orig) > 0
- let indent_str = indent_orig
- let indent_n = strlen(matchstr(str, '^\s*'))
- endif
- endif
-
- " Trim trailing, leading and running whitespace
- let str = substitute(str, '\s\+$', '', '')
- let str = substitute(str, '^\s\+', '', '')
- let str = substitute(str, '\s\+', ' ', 'g')
- let str_n = strdisplaywidth(str)
-
- " Possible addition of space after punctuation
- if exists("join_str")
- let str = substitute(str, join_str, '\1 ', 'g')
- endif
- let join_n = strdisplaywidth(str) - str_n
-
- " Can extraspaces be added?
- " Note that str_n may be less than strlen(str) [joinspaces above]
- if strdisplaywidth(str) <= tw - indent_n && str_n > 0
- " How many spaces should be added
- let s_add = tw - str_n - indent_n - join_n
- let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n
- let s_dup = s_add / s_nr
- let s_mod = s_add % s_nr
-
- " Test if the changed line fits with tw
- if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw
-
- " Duplicate spaces
- while s_dup > 0
- let str = substitute(str, '\( \+\)', ' \1', 'g')
- let s_dup = s_dup - 1
- endwhile
-
- " Add extra spaces from the end
- while s_mod > 0
- let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '')
- let s_mod = s_mod - 1
- endwhile
-
- " Indent the line
- if indent_n > 0
- let str = substitute(str, '^', indent_str, '' )
- endif
-
- " Replace the line
- call setline(cur, str)
-
- " Convert to whitespace
- if &et == 0
- exec cur . 'retab!'
- endif
-
- endif " Change of line
- endif " Possible change
-
- let cur = cur + 1
- endwhile
-
- norm ^
-
- let &report = save_report
-
-endfunction
-
-" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai
+" Load the justify package.
+" For those users who were loading the justify plugin from here.
+packadd justify
diff --git a/runtime/pack/dist/opt/justify/plugin/justify.vim b/runtime/pack/dist/opt/justify/plugin/justify.vim
new file mode 100644
index 000000000..4ef3bf95f
--- /dev/null
+++ b/runtime/pack/dist/opt/justify/plugin/justify.vim
@@ -0,0 +1,316 @@
+" Function to left and right align text.
+"
+" Written by: Preben "Peppe" Guldberg <c928400@student.dtu.dk>
+" Created: 980806 14:13 (or around that time anyway)
+" Revised: 001103 00:36 (See "Revisions" below)
+
+
+" function Justify( [ textwidth [, maxspaces [, indent] ] ] )
+"
+" Justify() will left and right align a line by filling in an
+" appropriate amount of spaces. Extra spaces are added to existing
+" spaces starting from the right side of the line. As an example, the
+" following documentation has been justified.
+"
+" The function takes the following arguments:
+
+" textwidth argument
+" ------------------
+" If not specified, the value of the 'textwidth' option is used. If
+" 'textwidth' is zero a value of 80 is used.
+"
+" Additionally the arguments 'tw' and '' are accepted. The value of
+" 'textwidth' will be used. These are handy, if you just want to specify
+" the maxspaces argument.
+
+" maxspaces argument
+" ------------------
+" If specified, alignment will only be done, if the longest space run
+" after alignment is no longer than maxspaces.
+"
+" An argument of '' is accepted, should the user like to specify all
+" arguments.
+"
+" To aid user defined commands, negative values are accepted aswell.
+" Using a negative value specifies the default behaviour: any length of
+" space runs will be used to justify the text.
+
+" indent argument
+" ---------------
+" This argument specifies how a line should be indented. The default is
+" to keep the current indentation.
+"
+" Negative values: Keep current amount of leading whitespace.
+" Positive values: Indent all lines with leading whitespace using this
+" amount of whitespace.
+"
+" Note that the value 0, needs to be quoted as a string. This value
+" leads to a left flushed text.
+"
+" Additionally units of 'shiftwidth'/'sw' and 'tabstop'/'ts' may be
+" added. In this case, if the value of indent is positive, the amount of
+" whitespace to be added will be multiplied by the value of the
+" 'shiftwidth' and 'tabstop' settings. If these units are used, the
+" argument must be given as a string, eg. Justify('','','2sw').
+"
+" If the values of 'sw' or 'tw' are negative, they are treated as if
+" they were 0, which means that the text is flushed left. There is no
+" check if a negative number prefix is used to change the sign of a
+" negative 'sw' or 'ts' value.
+"
+" As with the other arguments, '' may be used to get the default
+" behaviour.
+
+
+" Notes:
+"
+" If the line, adjusted for space runs and leading/trailing whitespace,
+" is wider than the used textwidth, the line will be left untouched (no
+" whitespace removed). This should be equivalent to the behaviour of
+" :left, :right and :center.
+"
+" If the resulting line is shorter than the used textwidth it is left
+" untouched.
+"
+" All space runs in the line are truncated before the alignment is
+" carried out.
+"
+" If you have set 'noexpandtab', :retab! is used to replace space runs
+" with whitespace using the value of 'tabstop'. This should be
+" conformant with :left, :right and :center.
+"
+" If joinspaces is set, an extra space is added after '.', '?' and '!'.
+" If 'cpooptions' include 'j', extra space is only added after '.'.
+" (This may on occasion conflict with maxspaces.)
+
+
+" Related mappings:
+"
+" Mappings that will align text using the current text width, using at
+" most four spaces in a space run and keeping current indentation.
+nmap _j :%call Justify('tw',4)<CR>
+vmap _j :call Justify('tw',4)<CR>
+"
+" Mappings that will remove space runs and format lines (might be useful
+" prior to aligning the text).
+nmap ,gq :%s/\s\+/ /g<CR>gq1G
+vmap ,gq :s/\s\+/ /g<CR>gvgq
+
+
+" User defined command:
+"
+" The following is an ex command that works as a shortcut to the Justify
+" function. Arguments to Justify() can be added after the command.
+com! -range -nargs=* Justify <line1>,<line2>call Justify(<f-args>)
+"
+" The following commands are all equivalent:
+"
+" 1. Simplest use of Justify():
+" :call Justify()
+" :Justify
+"
+" 2. The _j mapping above via the ex command:
+" :%Justify tw 4
+"
+" 3. Justify visualised text at 72nd column while indenting all
+" previously indented text two shiftwidths
+" :'<,'>call Justify(72,'','2sw')
+" :'<,'>Justify 72 -1 2sw
+"
+" This documentation has been justified using the following command:
+":se et|kz|1;/^" function Justify(/+,'z-g/^" /s/^" //|call Justify(70,3)|s/^/" /
+
+" Revisions:
+" 001103: If 'joinspaces' was set, calculations could be wrong.
+" Tabs at start of line could also lead to errors.
+" Use setline() instead of "exec 's/foo/bar/' - safer.
+" Cleaned up the code a bit.
+"
+" Todo: Convert maps to the new script specific form
+
+" Error function
+function! Justify_error(message)
+ echohl Error
+ echo "Justify([tw, [maxspaces [, indent]]]): " . a:message
+ echohl None
+endfunction
+
+
+" Now for the real thing
+function! Justify(...) range
+
+ if a:0 > 3
+ call Justify_error("Too many arguments (max 3)")
+ return 1
+ endif
+
+ " Set textwidth (accept 'tw' and '' as arguments)
+ if a:0 >= 1
+ if a:1 =~ '^\(tw\)\=$'
+ let tw = &tw
+ elseif a:1 =~ '^\d\+$'
+ let tw = a:1
+ else
+ call Justify_error("tw must be a number (>0), '' or 'tw'")
+ return 2
+ endif
+ else
+ let tw = &tw
+ endif
+ if tw == 0
+ let tw = 80
+ endif
+
+ " Set maximum number of spaces between WORDs
+ if a:0 >= 2
+ if a:2 == ''
+ let maxspaces = tw
+ elseif a:2 =~ '^-\d\+$'
+ let maxspaces = tw
+ elseif a:2 =~ '^\d\+$'
+ let maxspaces = a:2
+ else
+ call Justify_error("maxspaces must be a number or ''")
+ return 3
+ endif
+ else
+ let maxspaces = tw
+ endif
+ if maxspaces <= 1
+ call Justify_error("maxspaces should be larger than 1")
+ return 4
+ endif
+
+ " Set the indentation style (accept sw and ts units)
+ let indent_fix = ''
+ if a:0 >= 3
+ if (a:3 == '') || a:3 =~ '^-[1-9]\d*\(shiftwidth\|sw\|tabstop\|ts\)\=$'
+ let indent = -1
+ elseif a:3 =~ '^-\=0\(shiftwidth\|sw\|tabstop\|ts\)\=$'
+ let indent = 0
+ elseif a:3 =~ '^\d\+\(shiftwidth\|sw\|tabstop\|ts\)\=$'
+ let indent = substitute(a:3, '\D', '', 'g')
+ elseif a:3 =~ '^\(shiftwidth\|sw\|tabstop\|ts\)$'
+ let indent = 1
+ else
+ call Justify_error("indent: a number with 'sw'/'ts' unit")
+ return 5
+ endif
+ if indent >= 0
+ while indent > 0
+ let indent_fix = indent_fix . ' '
+ let indent = indent - 1
+ endwhile
+ let indent_sw = 0
+ if a:3 =~ '\(shiftwidth\|sw\)'
+ let indent_sw = &sw
+ elseif a:3 =~ '\(tabstop\|ts\)'
+ let indent_sw = &ts
+ endif
+ let indent_fix2 = ''
+ while indent_sw > 0
+ let indent_fix2 = indent_fix2 . indent_fix
+ let indent_sw = indent_sw - 1
+ endwhile
+ let indent_fix = indent_fix2
+ endif
+ else
+ let indent = -1
+ endif
+
+ " Avoid substitution reports
+ let save_report = &report
+ set report=1000000
+
+ " Check 'joinspaces' and 'cpo'
+ if &js == 1
+ if &cpo =~ 'j'
+ let join_str = '\(\. \)'
+ else
+ let join_str = '\([.!?!] \)'
+ endif
+ endif
+
+ let cur = a:firstline
+ while cur <= a:lastline
+
+ let str_orig = getline(cur)
+ let save_et = &et
+ set et
+ exec cur . "retab"
+ let &et = save_et
+ let str = getline(cur)
+
+ let indent_str = indent_fix
+ let indent_n = strlen(indent_str)
+ " Shall we remember the current indentation
+ if indent < 0
+ let indent_orig = matchstr(str_orig, '^\s*')
+ if strlen(indent_orig) > 0
+ let indent_str = indent_orig
+ let indent_n = strlen(matchstr(str, '^\s*'))
+ endif
+ endif
+
+ " Trim trailing, leading and running whitespace
+ let str = substitute(str, '\s\+$', '', '')
+ let str = substitute(str, '^\s\+', '', '')
+ let str = substitute(str, '\s\+', ' ', 'g')
+ let str_n = strdisplaywidth(str)
+
+ " Possible addition of space after punctuation
+ if exists("join_str")
+ let str = substitute(str, join_str, '\1 ', 'g')
+ endif
+ let join_n = strdisplaywidth(str) - str_n
+
+ " Can extraspaces be added?
+ " Note that str_n may be less than strlen(str) [joinspaces above]
+ if strdisplaywidth(str) <= tw - indent_n && str_n > 0
+ " How many spaces should be added
+ let s_add = tw - str_n - indent_n - join_n
+ let s_nr = strlen(substitute(str, '\S', '', 'g') ) - join_n
+ let s_dup = s_add / s_nr
+ let s_mod = s_add % s_nr
+
+ " Test if the changed line fits with tw
+ if 0 <= (str_n + (maxspaces - 1)*s_nr + indent_n) - tw
+
+ " Duplicate spaces
+ while s_dup > 0
+ let str = substitute(str, '\( \+\)', ' \1', 'g')
+ let s_dup = s_dup - 1
+ endwhile
+
+ " Add extra spaces from the end
+ while s_mod > 0
+ let str = substitute(str, '\(\(\s\+\S\+\)\{' . s_mod . '}\)$', ' \1', '')
+ let s_mod = s_mod - 1
+ endwhile
+
+ " Indent the line
+ if indent_n > 0
+ let str = substitute(str, '^', indent_str, '' )
+ endif
+
+ " Replace the line
+ call setline(cur, str)
+
+ " Convert to whitespace
+ if &et == 0
+ exec cur . 'retab!'
+ endif
+
+ endif " Change of line
+ endif " Possible change
+
+ let cur = cur + 1
+ endwhile
+
+ norm ^
+
+ let &report = save_report
+
+endfunction
+
+" EOF vim: tw=78 ts=8 sw=4 sts=4 noet ai
diff --git a/src/version.c b/src/version.c
index d36a51baa..36cfa653f 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1673,
+/**/
1672,
/**/
1671,