Hi,

On Wed, Nov 22, 2017 at 9:11 AM, Axel Bender <[email protected]> wrote:
> @Yegappan
>
> Thank you for looking into this.
>
> The patch partly solves the issue (please see attached image).
>
> Now the colors from my qf.vim are used (probably because I used the
> same names for the syntax items) but the syntax is still from the
> default qf.vim (or built-in - please note the different separator
> characters: "|" in the qf window, and ":" in the :clist command).
>
> So the situation is (much) better now, but still not completely
> right...
>

I have updated the patch to use the qfSeparator highlight item.

- Yegappan

-- 
-- 
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 [email protected].
For more options, visit https://groups.google.com/d/optout.
diff --git a/src/quickfix.c b/src/quickfix.c
index 8e76cbfcd..e802e5dfd 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2654,6 +2654,9 @@ qf_list(exarg_T *eap)
     int                idx2 = -1;
     char_u     *arg = eap->arg;
     int                plus = FALSE;
+    int                qfFileAttr;
+    int                qfSepAttr;
+    int                qfLineAttr;
     int                all = eap->forceit;     /* if not :cl!, only show
                                                   recognised errors */
     qf_info_T  *qi = &ql_info;
@@ -2699,6 +2702,20 @@ qf_list(exarg_T *eap)
            idx2 = (-idx2 > i) ? 0 : idx2 + i + 1;
     }
 
+    /*
+     * Get the attributes for the different quickfix highlight items.  Note
+     * that this depends on syntax items defined in the qf.vim syntax file
+     */
+    qfFileAttr = syn_name2attr((char_u *)"qfFileName");
+    if (qfFileAttr == 0)
+       qfFileAttr = HL_ATTR(HLF_D);
+    qfSepAttr = syn_name2attr((char_u *)"qfSeparator");
+    if (qfSepAttr == 0)
+       qfSepAttr = HL_ATTR(HLF_D);
+    qfLineAttr = syn_name2attr((char_u *)"qfLineNr");
+    if (qfLineAttr == 0)
+       qfLineAttr = HL_ATTR(HLF_N);
+
     if (qi->qf_lists[qi->qf_curlist].qf_nonevalid)
        all = TRUE;
     qfp = qi->qf_lists[qi->qf_curlist].qf_start;
@@ -2724,22 +2741,26 @@ qf_list(exarg_T *eap)
                vim_snprintf((char *)IObuff, IOSIZE, "%2d %s",
                                                            i, (char *)fname);
            msg_outtrans_attr(IObuff, i == qi->qf_lists[qi->qf_curlist].qf_index
-                                          ? HL_ATTR(HLF_QFL) : HL_ATTR(HLF_D));
+                                          ? HL_ATTR(HLF_QFL) : qfFileAttr);
+
+           if (qfp->qf_lnum != 0)
+               msg_puts_attr((char_u *)":", qfSepAttr);
            if (qfp->qf_lnum == 0)
                IObuff[0] = NUL;
            else if (qfp->qf_col == 0)
-               sprintf((char *)IObuff, ":%ld", qfp->qf_lnum);
+               sprintf((char *)IObuff, "%ld", qfp->qf_lnum);
            else
-               sprintf((char *)IObuff, ":%ld col %d",
+               sprintf((char *)IObuff, "%ld col %d",
                                                   qfp->qf_lnum, qfp->qf_col);
-           sprintf((char *)IObuff + STRLEN(IObuff), "%s:",
+           sprintf((char *)IObuff + STRLEN(IObuff), "%s",
                                  (char *)qf_types(qfp->qf_type, qfp->qf_nr));
-           msg_puts_attr(IObuff, HL_ATTR(HLF_N));
+           msg_puts_attr(IObuff, qfLineAttr);
+           msg_puts_attr((char_u *)":", qfSepAttr);
            if (qfp->qf_pattern != NULL)
            {
                qf_fmt_text(qfp->qf_pattern, IObuff, IOSIZE);
-               STRCAT(IObuff, ":");
                msg_puts(IObuff);
+               msg_puts_attr((char_u *)":", qfSepAttr);
            }
            msg_puts((char_u *)" ");
 

Raspunde prin e-mail lui