@@ -2212,8 +2212,7 @@ qf_jump(qf_info_T *qi,
22122212 old_qf_ptr = qf_ptr ;
22132213 qf_index = qi -> qf_lists [qi -> qf_curlist ].qf_index ;
22142214 old_qf_index = qf_index ;
2215- if (dir == FORWARD || dir == FORWARD_FILE ||
2216- dir == BACKWARD || dir == BACKWARD_FILE ) /* next/prev valid entry */
2215+ if (dir != 0 ) /* next/prev valid entry */
22172216 {
22182217 qf_ptr = get_nth_valid_entry (qi , errornr , qf_ptr , & qf_index , dir );
22192218 if (qf_ptr == NULL )
@@ -4726,6 +4725,8 @@ enum {
47264725 QF_GETLIST_WINID = 0x8 ,
47274726 QF_GETLIST_CONTEXT = 0x10 ,
47284727 QF_GETLIST_ID = 0x20 ,
4728+ QF_GETLIST_IDX = 0x40 ,
4729+ QF_GETLIST_SIZE = 0x80 ,
47294730 QF_GETLIST_ALL = 0xFF
47304731};
47314732
@@ -4882,6 +4883,12 @@ qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict)
48824883 if (dict_find (what , (char_u * )"items" , -1 ) != NULL )
48834884 flags |= QF_GETLIST_ITEMS ;
48844885
4886+ if (dict_find (what , (char_u * )"idx" , -1 ) != NULL )
4887+ flags |= QF_GETLIST_IDX ;
4888+
4889+ if (dict_find (what , (char_u * )"size" , -1 ) != NULL )
4890+ flags |= QF_GETLIST_SIZE ;
4891+
48854892 if (flags & QF_GETLIST_TITLE )
48864893 {
48874894 char_u * t ;
@@ -4934,6 +4941,19 @@ qf_get_properties(win_T *wp, dict_T *what, dict_T *retdict)
49344941 status = dict_add_nr_str (retdict , "id" , qi -> qf_lists [qf_idx ].qf_id ,
49354942 NULL );
49364943
4944+ if ((status == OK ) && (flags & QF_GETLIST_IDX ))
4945+ {
4946+ int idx = qi -> qf_lists [qf_idx ].qf_index ;
4947+ if (qi -> qf_lists [qf_idx ].qf_count == 0 )
4948+ /* For empty lists, qf_index is set to 1 */
4949+ idx = 0 ;
4950+ status = dict_add_nr_str (retdict , "idx" , idx , NULL );
4951+ }
4952+
4953+ if ((status == OK ) && (flags & QF_GETLIST_SIZE ))
4954+ status = dict_add_nr_str (retdict , "size" ,
4955+ qi -> qf_lists [qf_idx ].qf_count , NULL );
4956+
49374957 return status ;
49384958}
49394959
0 commit comments