本文整理汇总了Golang中lime/backend.View.Sel方法的典型用法代码示例。如果您正苦于以下问题:Golang View.Sel方法的具体用法?Golang View.Sel怎么用?Golang View.Sel使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类lime/backend.View
的用法示例。
在下文中一共展示了View.Sel方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: renderView
func (t *tbfe) renderView(sx, sy, w, h int, v *backend.View) {
sel := v.Sel()
substr := v.Buffer().Data()
vr := t.VisibleRegion(v)
lines := strings.Split(substr, "\n")
s, _ := v.Buffer().RowCol(vr.Begin())
e, _ := v.Buffer().RowCol(vr.End())
if e > 1 {
e = e - 1
if e > h {
s = e - h
}
}
off := len(strings.Join(lines[:s], "\n"))
lines = lines[s:e]
runes := []rune(strings.Join(lines, "\n"))
x, y := sx, sy
ex, ey := sx+w, sy+h
sub2 := ""
var (
lastScope string
lfg, lbg = defaultFg, defaultBg
)
tab_size, ok := v.Settings().Get("tab_size", 4).(int)
if !ok {
tab_size = 4
}
caret_style := termbox.AttrUnderline
if b, ok := v.Settings().Get("caret_style", "underline").(string); ok {
if b == "block" {
caret_style = termbox.AttrReverse
}
}
if b, ok := v.Settings().Get("inverse_caret_state", false).(bool); !b && ok {
if caret_style == termbox.AttrReverse {
caret_style = termbox.AttrUnderline
} else {
caret_style = termbox.AttrReverse
}
}
caret_blink := true
if b, ok := v.Settings().Get("caret_blink", true).(bool); ok {
caret_blink = b
}
for i := range runes {
sub2 += string(runes[i])
if x < ex {
o := off + len(sub2)
r := primitives.Region{o, o}
fg, bg := lfg, lbg
scope := v.ScopeName(o)
if scope != lastScope {
fg, bg = defaultFg, defaultBg
lastScope = scope
na := scope
for len(na) > 0 {
sn := na
i := strings.LastIndex(sn, " ")
if i != -1 {
sn = sn[i+1:]
}
if c, ok := schemelut[sn]; ok {
fg, bg = c[0], c[1]
break
}
if i2 := strings.LastIndex(na, "."); i2 == -1 {
break
} else if i > i2 {
na = na[:i]
} else {
na = strings.TrimSpace(na[:i2])
}
}
lfg, lbg = fg, bg
} else {
fg, bg = lfg, lbg
}
for _, r2 := range sel.Regions() {
if r2.B == r.B {
if !caret_blink || blink {
if r2.Contains(o) {
fg |= termbox.AttrReverse
} else {
fg |= caret_style
}
}
break
} else if r2.Contains(o) {
fg |= termbox.AttrReverse
break
}
}
if runes[i] == '\t' {
add := (x + 1 + (tab_size - 1)) &^ (tab_size - 1)
for x < add {
//.........这里部分代码省略.........
示例2: renderView
func (t *tbfe) renderView(v *backend.View, lay layout) {
p := util.Prof.Enter("render")
defer p.Exit()
sx, sy, w, h := lay.x, lay.y, lay.width, lay.height
vr := lay.visible
runes := v.Buffer().Substr(vr)
x, y := sx, sy
ex, ey := sx+w, sy+h
caretStyle := t.settings.caretStyle
if t.settings.caretBlink && blink {
t.settings.caretStyle = 0
}
recipie := v.Transform(scheme, vr).Transcribe()
fg, bg := defaultFg, defaultBg
sel := v.Sel()
line, _ := v.Buffer().RowCol(vr.Begin())
eofline, _ := v.Buffer().RowCol(v.Buffer().Size())
lineNumberRenderSize := len(intToRunes(eofline))
for i, r := range runes {
o := vr.Begin() + i
curr := 0
fg, bg = defaultFg, defaultBg
if t.settings.lineNumbers {
renderLineNumber(&line, &x, y, lineNumberRenderSize, fg, bg)
}
for curr < len(recipie) && (o >= recipie[curr].Region.Begin()) {
if o < recipie[curr].Region.End() {
fg = palLut(textmate.Color(recipie[curr].Flavour.Foreground))
bg = palLut(textmate.Color(recipie[curr].Flavour.Background))
}
curr++
}
if sel.Contains(Region{o, o}) {
fg = fg | t.settings.caretStyle
}
if r == '\t' {
add := (x + 1 + (t.settings.tabSize - 1)) &^ (t.settings.tabSize - 1)
for x < add {
if x < ex {
termbox.SetCell(x, y, ' ', fg, bg)
}
fg = fg &^ termbox.AttrUnderline // Just looks weird with a long underline
x++
}
continue
} else if r == '\n' {
x = sx
y++
if y > ey {
break
}
continue
}
if x < ex {
termbox.SetCell(x, y, r, fg, bg)
}
x++
}
if t.settings.lineNumbers {
renderLineNumber(&line, &x, y, lineNumberRenderSize, fg, bg)
}
// restore original caretStyle before blink modification
t.settings.caretStyle = caretStyle
}
示例3: renderView
func (t *tbfe) renderView(v *backend.View, lay layout) {
p := util.Prof.Enter("render")
defer p.Exit()
sx, sy, w, h := lay.x, lay.y, lay.width, lay.height
sel := v.Sel()
vr := lay.visible
runes := v.Buffer().SubstrR(vr)
x, y := sx, sy
ex, ey := sx+w, sy+h
var (
lastScope string
lfg, lbg = defaultFg, defaultBg
)
tab_size, ok := v.Settings().Get("tab_size", 4).(int)
if !ok {
tab_size = 4
}
caret_style := termbox.AttrUnderline
if b, ok := v.Settings().Get("caret_style", "underline").(string); ok {
if b == "block" {
caret_style = termbox.AttrReverse
}
}
if b, ok := v.Settings().Get("inverse_caret_state", false).(bool); !b && ok {
if caret_style == termbox.AttrReverse {
caret_style = termbox.AttrUnderline
} else {
caret_style = termbox.AttrReverse
}
}
caret_blink := true
if b, ok := v.Settings().Get("caret_blink", true).(bool); ok {
caret_blink = b
}
highlight_line := false
if b, ok := v.Settings().Get("highlight_line", highlight_line).(bool); ok {
highlight_line = b
}
// TODO: much of this belongs in backend as it's not specific to any particular frontend
for i := range runes {
o := vr.Begin() + i
fg, bg := lfg, lbg
scope := v.ScopeName(o)
var lr Region
if highlight_line {
lr = v.Buffer().Line(o)
}
if scope != lastScope {
fg, bg = defaultFg, defaultBg
lastScope = scope
na := scope
for len(na) > 0 {
sn := na
i := strings.LastIndex(sn, " ")
if i != -1 {
sn = sn[i+1:]
}
if c, ok := schemelut[sn]; ok {
fg, bg = c[0], c[1]
break
}
if i2 := strings.LastIndex(na, "."); i2 == -1 {
break
} else if i > i2 {
na = na[:i]
} else {
na = strings.TrimSpace(na[:i2])
}
}
lfg, lbg = fg, bg
} else {
fg, bg = lfg, lbg
}
for _, r2 := range sel.Regions() {
if highlight_line && (lr.Contains(r2.A) || lr.Contains(r2.B)) {
// TODO: highlight color
bg |= termbox.AttrReverse
continue
}
if r2.Contains(o) {
if r2.Size() == 0 {
if !caret_blink || blink {
fg |= caret_style
}
break
} else if r2.Contains(o + 1) {
// TODO: selection color
fg |= termbox.AttrReverse
break
}
}
}
if runes[i] == '\t' {
add := (x + 1 + (tab_size - 1)) &^ (tab_size - 1)
for x < add {
//.........这里部分代码省略.........
示例4: renderView
func (t *tbfe) renderView(v *backend.View, lay layout) {
p := util.Prof.Enter("render")
defer p.Exit()
sx, sy, w, h := lay.x, lay.y, lay.width, lay.height
vr := lay.visible
runes := v.Buffer().Substr(vr)
x, y := sx, sy
ex, ey := sx+w, sy+h
tab_size, ok := v.Settings().Get("tab_size", 4).(int)
if !ok {
tab_size = 4
}
recipie := v.Transform(scheme, vr).Transcribe()
curr := 0
fg, bg := defaultFg, defaultBg
_ = render.DRAW_TEXT
sel := v.Sel()
caret_blink := true
if b, ok := v.Settings().Get("caret_blink", true).(bool); ok {
caret_blink = b
}
highlight_line := false
if b, ok := v.Settings().Get("highlight_line", highlight_line).(bool); ok {
highlight_line = b
}
caret_style := termbox.AttrUnderline
if b, ok := v.Settings().Get("caret_style", "underline").(string); ok {
if b == "block" {
caret_style = termbox.AttrReverse
}
}
if b, ok := v.Settings().Get("inverse_caret_state", false).(bool); !b && ok {
if caret_style == termbox.AttrReverse {
caret_style = termbox.AttrUnderline
} else {
caret_style = termbox.AttrReverse
}
}
if caret_blink && blink {
caret_style = 0
}
for i, r := range runes {
o := vr.Begin() + i
curr = 0
fg, bg = defaultFg, defaultBg
for curr < len(recipie) && (o >= recipie[curr].Region.Begin()) {
// if curr > 0 {
// curr--
// }
if o < recipie[curr].Region.End() {
fg = palLut(textmate.Color(recipie[curr].Flavour.Foreground))
bg = palLut(textmate.Color(recipie[curr].Flavour.Background))
}
curr++
}
if sel.Contains(Region{o, o}) {
fg = fg | caret_style
}
if r == '\t' {
add := (x + 1 + (tab_size - 1)) &^ (tab_size - 1)
for x < add {
if x < ex {
termbox.SetCell(x, y, ' ', fg, bg)
}
fg = fg &^ termbox.AttrUnderline // Just looks weird with a long underline
x++
}
continue
} else if r == '\n' {
// for ; x < ex; x++ {
// termbox.SetCell(x, y, ' ', fg, bg)
// if !highlight_line {
// break
// }
// }
x = sx
y++
if y > ey {
break
}
continue
}
if x < ex {
termbox.SetCell(x, y, r, fg, bg)
}
x++
}
}