def _PlaceNewSigns(kept_signs, new_signs):
    placed_signs = kept_signs[:]
    for sign in new_signs:
        # Do not set two signs on the same line, it will screw up storing sign
        # locations.
        if sign in placed_signs:
            continue
        vimsupport.PlaceSign(sign.id, sign.line, sign.buffer, sign.is_error)
        placed_signs.append(sign)
    return placed_signs
Esempio n. 2
0
def _UpdateSigns(buffer_number_to_line_to_diags, next_sign_id):
    vimsupport.UnplaceAllSignsInBuffer(vim.current.buffer.number)
    for buffer_number, line_to_diags in buffer_number_to_line_to_diags.iteritems(
    ):
        if not vimsupport.BufferIsVisible(buffer_number):
            continue

        vimsupport.UnplaceAllSignsInBuffer(buffer_number)
        for line, diags in line_to_diags.iteritems():
            for diag in diags:
                vimsupport.PlaceSign(next_sign_id, line, buffer_number,
                                     _DiagnosticIsError(diag))
                next_sign_id += 1
    return next_sign_id
Esempio n. 3
0
    def _UpdateSigns(self):
        signs_to_unplace = vimsupport.GetSignsInBuffer(self._bufnr)

        for line, diags in self._line_to_diags.items():
            if not diags:
                continue

            # We always go for the first diagnostic on the line because diagnostics
            # are sorted by errors in priority and Vim can only display one sign by
            # line.
            name = 'YcmError' if _DiagnosticIsError(diags[0]) else 'YcmWarning'
            sign = vimsupport.CreateSign(line, name, self._bufnr)

            try:
                signs_to_unplace.remove(sign)
            except ValueError:
                vimsupport.PlaceSign(sign)

        for sign in signs_to_unplace:
            vimsupport.UnplaceSign(sign)
 def _PlaceNewSigns(self, new_signs):
     for sign in new_signs:
         vimsupport.PlaceSign(sign.id, sign.line, self._bufnr,
                              sign.is_error)
         self._placed_signs.append(sign)