Re: Only curiosity: Optimizing a vimtip (modified)

2006-10-24 Thread A.J.Mechelynck

Meino Christian Cramer wrote:

Hi,

 I read of a vimtip, that one can move/copy lines of a text which
 match a cvertina pattern to line 0 (top) of the text.

 This is a nice trick to gather material for a kinda quick'n'dirty
 Table of contents it has one drwaback: The copied lines are in
 reversed order.

 Surely it is possible to write a fairly simple function with a
 counter, which keeps track to what line something is copied. 


 But it would be interesting whether it is possible to achieve this
 with more condensed tricks without writing a function in
 beforehand.

 Thank you very much for any idea/hack/trick in advance!
 
 Keep hacking!

 mcc




1. Place a mark on the first line. You have a choice of 26 names, I'll assume 
t for table of contents.


2. Copy your headings (e.g. with a :g command) to 't-1 
(apostrophe-tee-minus-one, i.e., just above the marked line).


3. (Optional, and version 7 only) :delmark t


Best regards,
Tony.


Re: Only curiosity: Optimizing a vimtip (modified)

2006-10-24 Thread Dave Roberts

Meino Christian Cramer wrote:

Hi,

 I read of a vimtip, that one can move/copy lines of a text which
 match a cvertina pattern to line 0 (top) of the text.

 This is a nice trick to gather material for a kinda quick'n'dirty
 Table of contents it has one drwaback: The copied lines are in
 reversed order.

 Surely it is possible to write a fairly simple function with a
 counter, which keeps track to what line something is copied. 


 But it would be interesting whether it is possible to achieve this
 with more condensed tricks without writing a function in
 beforehand.

 Thank you very much for any idea/hack/trick in advance!
 
 Keep hacking!

 mcc

  


You could use the reverse lines trick to reorder the copied lines. Use 
the following to put the lines at the top of the file:

:let cnt=0|g/(regexp)/copy 0|let cnt=cnt+1

Then re-reverse the copied lines at the top of the file:
:exe 1,.cnt.g/^/m0

Easy enough to put that into a function passing the 'regexp' to it...

- Dave


Re: Only curiosity: Optimizing a vimtip (modified)

2006-10-24 Thread Benji Fisher
On Tue, Oct 24, 2006 at 08:47:46AM -0400, Dave Roberts wrote:
 Meino Christian Cramer wrote:
 Hi,
 
  I read of a vimtip, that one can move/copy lines of a text which
  match a cvertina pattern to line 0 (top) of the text.
 
  This is a nice trick to gather material for a kinda quick'n'dirty
  Table of contents it has one drwaback: The copied lines are in
  reversed order.
 
  Surely it is possible to write a fairly simple function with a
  counter, which keeps track to what line something is copied. 
 
  But it would be interesting whether it is possible to achieve this
  with more condensed tricks without writing a function in
  beforehand.
 
  Thank you very much for any idea/hack/trick in advance!
  
  Keep hacking!
  mcc
 
   
 
 You could use the reverse lines trick to reorder the copied lines. Use 
 the following to put the lines at the top of the file:
 :let cnt=0|g/(regexp)/copy 0|let cnt=cnt+1
 
 Then re-reverse the copied lines at the top of the file:
 :exe 1,.cnt.g/^/m0
 
 Easy enough to put that into a function passing the 'regexp' to it...
 
 - Dave

 Another possibility is to copy all of the lines to the end of the
file (:copy $  instead of  :copy 0 ).  Then, having saved line($)
before adding lines, you know how many lines to :move to the top.

plug
Some time ago, answering a similar question on this list, I wrote the
Pippo() function and added it to foo.vim, my file of example vim
functions:  http://www.vim.org/script.php?script_id=72
This is more of an index function than a table-of-contents function:  it
searches for words (matching a given regular expression) and appends
them to the end of the file, one per line.
/plug

HTH --Benji Fisher


Only curiosity: Optimizing a vimtip (modified)

2006-10-23 Thread Meino Christian Cramer
Hi,

 I read of a vimtip, that one can move/copy lines of a text which
 match a cvertina pattern to line 0 (top) of the text.

 This is a nice trick to gather material for a kinda quick'n'dirty
 Table of contents it has one drwaback: The copied lines are in
 reversed order.

 Surely it is possible to write a fairly simple function with a
 counter, which keeps track to what line something is copied. 

 But it would be interesting whether it is possible to achieve this
 with more condensed tricks without writing a function in
 beforehand.

 Thank you very much for any idea/hack/trick in advance!
 
 Keep hacking!
 mcc