v.Buf.Insert(Loc{0, i}, Spaces(tabsize))
if i == start {
if v.Cursor.CurSelection[0].X > 0 {
- v.Cursor.CurSelection[0] = v.Cursor.CurSelection[0].Move(tabsize, v.Buf)
+ v.Cursor.SetSelectionStart(v.Cursor.CurSelection[0].Move(tabsize, v.Buf))
}
}
if i == end {
- v.Cursor.CurSelection[1] = Loc{endX + tabsize + 1, end}
+ v.Cursor.SetSelectionEnd(Loc{endX + tabsize + 1, end})
}
} else {
v.Buf.Insert(Loc{0, i}, "\t")
if i == start {
if v.Cursor.CurSelection[0].X > 0 {
- v.Cursor.CurSelection[0] = v.Cursor.CurSelection[0].Move(1, v.Buf)
+ v.Cursor.SetSelectionStart(v.Cursor.CurSelection[0].Move(1, v.Buf))
}
}
if i == end {
- v.Cursor.CurSelection[1] = Loc{endX + 2, end}
+ v.Cursor.SetSelectionEnd(Loc{endX + 2, end})
}
}
}
v.Buf.Remove(Loc{0, i}, Loc{1, i})
if i == start {
if v.Cursor.CurSelection[0].X > 0 {
- v.Cursor.CurSelection[0] = v.Cursor.CurSelection[0].Move(-1, v.Buf)
+ v.Cursor.SetSelectionStart(v.Cursor.CurSelection[0].Move(-1, v.Buf))
}
}
if i == end {
- v.Cursor.CurSelection[1] = Loc{endX - j, end}
+ v.Cursor.SetSelectionEnd(Loc{endX - j, end})
}
}
} else {
v.Buf.Remove(Loc{0, i}, Loc{1, i})
if i == start {
if v.Cursor.CurSelection[0].X > 0 {
- v.Cursor.CurSelection[0] = v.Cursor.CurSelection[0].Move(-1, v.Buf)
+ v.Cursor.SetSelectionStart(v.Cursor.CurSelection[0].Move(-1, v.Buf))
}
}
if i == end {
- v.Cursor.CurSelection[1] = Loc{endX, end}
+ v.Cursor.SetSelectionEnd(Loc{endX, end})
}
}
}
}
if v.Cursor.HasSelection() {
- clipboard.WriteAll(v.Cursor.GetSelection())
+ clipboard.WriteAll(v.Cursor.GetSelection(), "clipboard")
v.freshClip = true
messenger.Message("Copied selection")
}
}
if v.freshClip == true {
if v.Cursor.HasSelection() {
- if clip, err := clipboard.ReadAll(); err != nil {
+ if clip, err := clipboard.ReadAll("clipboard"); err != nil {
messenger.Error(err)
} else {
- clipboard.WriteAll(clip + v.Cursor.GetSelection())
+ clipboard.WriteAll(clip+v.Cursor.GetSelection(), "clipboard")
}
}
} else if time.Since(v.lastCutTime)/time.Second > 10*time.Second || v.freshClip == false {
}
if v.Cursor.HasSelection() {
- clipboard.WriteAll(v.Cursor.GetSelection())
+ clipboard.WriteAll(v.Cursor.GetSelection(), "clipboard")
v.Cursor.DeleteSelection()
v.Cursor.ResetSelection()
v.freshClip = true
return false
}
- leadingWS := GetLeadingWhitespace(v.Buf.Line(v.Cursor.Y))
+ clip, _ := clipboard.ReadAll("clipboard")
+ v.paste(clip)
- if v.Cursor.HasSelection() {
- v.Cursor.DeleteSelection()
- v.Cursor.ResetSelection()
+ if usePlugin {
+ return PostActionCall("Paste", v)
+ }
+ return true
+}
+
+// PastePrimary pastes from the primary clipboard (only use on linux)
+func (v *View) PastePrimary(usePlugin bool) bool {
+ if usePlugin && !PreActionCall("Paste", v) {
+ return false
}
- clip, _ := clipboard.ReadAll()
- clip = strings.Replace(clip, "\n", "\n"+leadingWS, -1)
- v.Buf.Insert(v.Cursor.Loc, clip)
- v.Cursor.Loc = v.Cursor.Loc.Move(Count(clip), v.Buf)
- v.freshClip = false
- messenger.Message("Pasted clipboard")
+
+ clip, _ := clipboard.ReadAll("primary")
+ v.paste(clip)
if usePlugin {
return PostActionCall("Paste", v)
return false
}
- v.Cursor.CurSelection[0] = v.Buf.Start()
- v.Cursor.CurSelection[1] = v.Buf.End()
+ v.Cursor.SetSelectionStart(v.Buf.Start())
+ v.Cursor.SetSelectionEnd(v.Buf.End())
// Put the cursor at the beginning
v.Cursor.X = 0
v.Cursor.Y = 0