Hi all,

I have seen several requests for customizing the text displayed
in the quickfix window. I am attaching the updates to the help text
for adding a new "qfbufexpr" option that will support this.
Any comments and suggestions on this approach?

Regards,
Yegappan

diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 7d8e032cd..6b6614ef0 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -5883,6 +5883,62 @@ A jump table for the options with a short
description can be found at |Q_op|.
  This option cannot be set from a |modeline| or in the |sandbox|, for
  security reasons.

+ *'qfbufexpr'* *'qbe'*
+'qfbufexpr' 'qbe' string (default "")
+ global
+ {only available when compiled with the |+quickfix|
+ feature}
+ Expression for text to display in the quickfix and location list
+ window buffers. The supplied expression should be the name of a Vim
+ function that accepts three arguments. The first argument is set to
+ v:true if the expression is called for a quickfix list. The second
+ argument is the quickfix or location list list identifier. The third
+ argument is the index of the entry in the quickfix or location list.
+ The function should return the text to display in the quickfix buffer.
+ The function is called for each entry in the quickfix list.
+
+ This can be used to customize the information displayed in the
+ quickfix or location buffer for each entry in the corresponding
+ quickfix or location list.
+
+ This option can be overriden by using the |setqflist()| and
+ |setloclist()| functions and setting the 'qfbufexpr' attribute for
+ a quickfix/location list.
+
+ The example below tries to mimic the default behavior for the quickfix
+ and location list buffers.
+ Example: >
+    func MyQfExpr(is_qf, qfid, eidx)
+ if a:isqf
+     let qfl = getqflist({'id' : a:qfid, 'idx' : a:eidx,
+     \ 'items' : 1}).items
+ else
+     let qfl = getloclist(0, {'id' : a:qfid, 'idx' : a:eidx,
+     \ 'items' : 1}).items
+ endif
+ let e = qfl[0]
+ let s = ''
+ if e.bufnr != 0
+     let bname = bufname(e.bufnr)
+     let s ..= fnamemodify(bname, ':.')
+ endif
+ let s ..= '|'
+ if e.lnum > 0
+     let s ..= e.lnum
+     if e.col != 0
+ let s ..= ' col ' . e.col
+     endif
+ elseif e.pattern != ''
+     let s ..= e.pattern
+ endif
+ let s ..= '| '
+ let s ..= substitute(e.text, '^\s\+', '', '')
+ return s
+    endfunc
+    set qfbufexpr=MyQfExpr
+<
+ NOTE: This option is set to "" when 'compatible' is set.
+
  *'quoteescape'* *'qe'*
 'quoteescape' 'qe' string (default "\")
  local to buffer
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index a20f56270..26b677eee 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -5438,8 +5438,9 @@ getqflist([{what}]) *getqflist()*
  id get information for the quickfix list with
  |quickfix-ID|; zero means the id for the
  current list or the list specified by "nr"
- idx index of the current entry in the quickfix
- list specified by 'id' or 'nr'.
+ idx get information for the quickfix entry at this
+ index in the list specified by 'id' or 'nr'.
+ If set to zero, then uses the current entry.
  See |quickfix-index|
  items quickfix list entries
  lines parse a list of lines using 'efm' and return
@@ -5475,7 +5476,7 @@ getqflist([{what}]) *getqflist()*
  If not present, set to "".
  id quickfix list ID |quickfix-ID|. If not
  present, set to 0.
- idx index of the current entry in the list. If not
+ idx index of the quickfix entry in the list. If not
  present, set to 0.
  items quickfix list entries. If not present, set to
  an empty list.
@@ -8658,6 +8659,13 @@ setqflist({list} [, {action} [, {what}]]) *setqflist()*
      nr list number in the quickfix stack; zero
  means the current quickfix list and "$" means
  the last quickfix list.
+     qfbufexpr expression to get the text to display in the
+ quickfix buffer for each entry in the list.
+ This should be set to a Vim function that is
+ called for each entry in the list and should
+ return the text to display. Refer to
+ |'qfbufexpr'| for more information and an
+ example.
      title quickfix list title text. See |quickfix-title|
  Unsupported keys in {what} are ignored.
  If the "nr" item is not present, then the current quickfix list

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/vim_dev/CAAW7x7nu7zjSkdtG8%3DObOeUE2BDDAvK-yHz9hCcPYd47kMMyAA%40mail.gmail.com.

Raspunde prin e-mail lui