| // Copyright 2018 The Go Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style |
| // license that can be found in the LICENSE file. |
| |
| // This file contains formatting functions for types that |
| // are commonly printed in debugging information. |
| // They are separated from their types and gathered here as |
| // they are hand written and not generated from the spec. |
| // They should not be relied on for programmatic use (their |
| // results should never be parsed for instance) but are meant |
| // for temporary debugging and error messages. |
| |
| package protocol |
| |
| import ( |
| "fmt" |
| ) |
| |
| func (p Position) Format(f fmt.State, c rune) { |
| fmt.Fprintf(f, "%d", int(p.Line)+1) |
| if p.Character >= 0 { |
| fmt.Fprintf(f, ":%d", int(p.Character)+1) |
| } |
| } |
| |
| func (r Range) Format(f fmt.State, c rune) { |
| switch { |
| case r.Start == r.End || r.End.Line < 0: |
| fmt.Fprintf(f, "%v", r.Start) |
| case r.End.Line == r.Start.Line: |
| fmt.Fprintf(f, "%v¦%d", r.Start, int(r.End.Character)+1) |
| default: |
| fmt.Fprintf(f, "%v¦%v", r.Start, r.End) |
| } |
| } |
| |
| func (l Location) Format(f fmt.State, c rune) { |
| fmt.Fprintf(f, "%s:%v", l.URI, l.Range) |
| } |
| |
| func (s DiagnosticSeverity) Format(f fmt.State, c rune) { |
| switch s { |
| case SeverityError: |
| fmt.Fprint(f, "Error") |
| case SeverityWarning: |
| fmt.Fprint(f, "Warning") |
| case SeverityInformation: |
| fmt.Fprint(f, "Information") |
| case SeverityHint: |
| fmt.Fprint(f, "Hint") |
| } |
| } |
| |
| func (d Diagnostic) Format(f fmt.State, c rune) { |
| fmt.Fprintf(f, "%v:%v from %v at %v: %v", d.Severity, d.Code, d.Source, d.Range, d.Message) |
| } |
| |
| func (i CompletionItem) Format(f fmt.State, c rune) { |
| fmt.Fprintf(f, "%v %v %v", i.Label, i.Detail, CompletionItemKind(i.Kind)) |
| } |
| |
| func (k CompletionItemKind) Format(f fmt.State, c rune) { |
| switch k { |
| case StructCompletion: |
| fmt.Fprintf(f, "struct") |
| case FunctionCompletion: |
| fmt.Fprintf(f, "func") |
| case VariableCompletion: |
| fmt.Fprintf(f, "var") |
| case TypeParameterCompletion: |
| fmt.Fprintf(f, "type") |
| case FieldCompletion: |
| fmt.Fprintf(f, "field") |
| case InterfaceCompletion: |
| fmt.Fprintf(f, "interface") |
| case ConstantCompletion: |
| fmt.Fprintf(f, "const") |
| case MethodCompletion: |
| fmt.Fprintf(f, "method") |
| case ModuleCompletion: |
| fmt.Fprintf(f, "package") |
| } |
| } |