core

package
v2.0.3-alpha.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 5, 2020 License: MIT Imports: 43 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ContentCmds contentCmds

global cmds added via init() from "contentcmds" pkg

View Source
var InternalCmds = internalCmds{}

cmds added via init() from "internalcmds" pkg

Functions

func ContentCmdFromTextArea

func ContentCmdFromTextArea(erow *ERow, index int)

func DeleteSession

func DeleteSession(ed *Editor, part *toolbarparser.Part)

func ExecCmd

func ExecCmd(ctx context.Context, dir string, args ...string) ([]byte, error)

func ExecCmdStdin

func ExecCmdStdin(ctx context.Context, dir string, rd io.Reader, args ...string) ([]byte, error)

func ExternalCmd

func ExternalCmd(erow *ERow, part *toolbarparser.Part)

func ExternalCmdFromArgs

func ExternalCmdFromArgs(erow *ERow, cargs []string, fend func(error))

func FindFileInfo

func FindFileInfo(name, dir string) (string, os.FileInfo, bool)

Checks in GOROOT/GOPATH, and some C include dirs.

func FindShortcut

func FindShortcut(erow *ERow)

Search/add the toolbar find command and warps the pointer to it.

func InternalCmdFromRootTb

func InternalCmdFromRootTb(ed *Editor, tb *ui.Toolbar)

func InternalCmdFromRowTb

func InternalCmdFromRowTb(erow *ERow)

func ListDirContext

func ListDirContext(ctx context.Context, w io.Writer, filepath string, tree, hidden bool) error

func ListDirERow

func ListDirERow(erow *ERow, filepath string, tree, hidden bool)

func ListSessions

func ListSessions(ed *Editor)

func OpenFileERow

func OpenFileERow(ed *Editor, conf *OpenFileERowConfig)

TODO: make it UI safe? rename to openfileerowasync?

func OpenSession

func OpenSession(ed *Editor, part *toolbarparser.Part)

func OpenSessionFromString

func OpenSessionFromString(ed *Editor, sessionName string)

func SaveSession

func SaveSession(ed *Editor, part *toolbarparser.Part)

Types

type ByListOrder

type ByListOrder []os.FileInfo

func (ByListOrder) Len

func (a ByListOrder) Len() int

func (ByListOrder) Less

func (a ByListOrder) Less(i, j int) bool

func (ByListOrder) Swap

func (a ByListOrder) Swap(i, j int)

type ColumnState

type ColumnState struct {
	StartPercent float64
	Rows         []*RowState
}

func NewColumnState

func NewColumnState(ed *Editor, col *ui.Column) *ColumnState

type ContentCmd

type ContentCmd struct {
	Name string // for removal and error msgs
	Fn   ContentCmdFn
}

type ContentCmdFn

type ContentCmdFn func(ctx context.Context, erow *ERow, index int) (_ error, handled bool)

type DndHandler

type DndHandler struct {
	// contains filtered or unexported fields
}

func NewDndHandler

func NewDndHandler(ed *Editor) *DndHandler

func (*DndHandler) OnDrop

func (h *DndHandler) OnDrop(ev *event.DndDrop)

func (*DndHandler) OnPosition

func (h *DndHandler) OnPosition(ev *event.DndPosition)

type EEventId

type EEventId int
const (
	PostNewERowEEventId EEventId = iota
	PostFileSaveEEventId
	PreRowCloseEEventId
	RowStateChangeEEventId
)

type EEvents

type EEvents struct {
	// contains filtered or unexported fields
}

Editor events.

func NewEEvents

func NewEEvents() *EEvents

func (*EEvents) Register

func (eevs *EEvents) Register(eid EEventId, fn func(interface{})) *evreg.Regist

type ERow

type ERow struct {
	Ed     *Editor
	Row    *ui.Row
	Info   *ERowInfo
	Exec   *ERowExec
	TbData toolbarparser.Data
	// contains filtered or unexported fields
}

func ExistingERowOrNewBasic

func ExistingERowOrNewBasic(ed *Editor, name string) (_ *ERow, isNew bool)

Used for ex. in: +messages, +sessions.

func ExistingERowOrNewLoaded

func ExistingERowOrNewLoaded(ed *Editor, name string) (_ *ERow, isNew bool, _ error)

func NewBasicERow

func NewBasicERow(info *ERowInfo, rowPos *ui.RowPos) *ERow

func NewLoadedERow

func NewLoadedERow(info *ERowInfo, rowPos *ui.RowPos) (*ERow, error)

func NewLoadedERowOrNewBasic

func NewLoadedERowOrNewBasic(info *ERowInfo, rowPos *ui.RowPos) *ERow

Allows creating rows in place even if a file/dir doesn't exist anymore (ex: show non-existent files rows in a saved session).

func (*ERow) CancelContentCmd

func (erow *ERow) CancelContentCmd()

func (*ERow) CancelInternalCmd

func (erow *ERow) CancelInternalCmd()

func (*ERow) Flash

func (erow *ERow) Flash()

UI Safe

func (*ERow) MakeIndexVisibleAndFlash

func (erow *ERow) MakeIndexVisibleAndFlash(index int)

func (*ERow) MakeRangeVisibleAndFlash

func (erow *ERow) MakeRangeVisibleAndFlash(index int, len int)

func (*ERow) Reload

func (erow *ERow) Reload()

func (*ERow) TextAreaAppendBytes

func (erow *ERow) TextAreaAppendBytes(p []byte)

Not UI safe.

func (*ERow) TextAreaAppendBytesAsync

func (erow *ERow) TextAreaAppendBytesAsync(p []byte) func()

UI safe, with option to wait.

func (*ERow) TextAreaReadWriteCloser

func (erow *ERow) TextAreaReadWriteCloser() io.ReadWriteCloser

func (*ERow) ToolbarSetStrAfterNameClearHistory

func (erow *ERow) ToolbarSetStrAfterNameClearHistory(s string)

func (*ERow) UpdateToolbarNameEncoding

func (erow *ERow) UpdateToolbarNameEncoding()

type ERowExec

type ERowExec struct {
	// contains filtered or unexported fields
}

func NewERowExec

func NewERowExec(erow *ERow) *ERowExec

func (*ERowExec) RunAsync

func (ee *ERowExec) RunAsync(fn func(context.Context, io.ReadWriter) error)

func (*ERowExec) Stop

func (ee *ERowExec) Stop()

type ERowInfo

type ERowInfo struct {
	Ed    *Editor
	ERows []*ERow // added order
	// contains filtered or unexported fields
}

Editor Row Info.

func (*ERowInfo) AddERow

func (info *ERowInfo) AddERow(erow *ERow)

func (*ERowInfo) Dir

func (info *ERowInfo) Dir() string

func (*ERowInfo) ERowsInUIOrder

func (info *ERowInfo) ERowsInUIOrder() []*ERow

func (*ERowInfo) EqualToBytesHash

func (info *ERowInfo) EqualToBytesHash(size int, hash []byte) bool

func (*ERowInfo) FileInfoErr

func (info *ERowInfo) FileInfoErr() error

func (*ERowInfo) FirstERow

func (info *ERowInfo) FirstERow() (*ERow, bool)

func (*ERowInfo) HandleRWEvWrite2

func (info *ERowInfo) HandleRWEvWrite2(erow *ERow, ev *iorw.RWEvWrite2)

func (*ERowInfo) HasFileinfo

func (info *ERowInfo) HasFileinfo() bool

func (*ERowInfo) HasRowState

func (info *ERowInfo) HasRowState(st ui.RowState) bool

func (*ERowInfo) IsDir

func (info *ERowInfo) IsDir() bool

func (*ERowInfo) IsFileButNotDir

func (info *ERowInfo) IsFileButNotDir() bool

func (*ERowInfo) IsNotExist

func (info *ERowInfo) IsNotExist() bool

func (*ERowInfo) IsSpecial

func (info *ERowInfo) IsSpecial() bool

func (*ERowInfo) Name

func (info *ERowInfo) Name() string

func (*ERowInfo) ReloadFile

func (info *ERowInfo) ReloadFile() error

func (*ERowInfo) RemoveERow

func (info *ERowInfo) RemoveERow(erow *ERow)

func (*ERowInfo) SaveFile

func (info *ERowInfo) SaveFile() error

Save file and update rows.

func (*ERowInfo) SetRowsBytes

func (info *ERowInfo) SetRowsBytes(b []byte)

func (*ERowInfo) UpdateActiveRowState

func (info *ERowInfo) UpdateActiveRowState(erow *ERow)

func (*ERowInfo) UpdateAnnotationsEditedRowState

func (info *ERowInfo) UpdateAnnotationsEditedRowState(v bool)

func (*ERowInfo) UpdateAnnotationsRowState

func (info *ERowInfo) UpdateAnnotationsRowState(v bool)

func (*ERowInfo) UpdateDiskEvent

func (info *ERowInfo) UpdateDiskEvent()

Should be called under UI goroutine.

func (*ERowInfo) UpdateDuplicateHighlightRowState

func (info *ERowInfo) UpdateDuplicateHighlightRowState()

func (*ERowInfo) UpdateDuplicateRowState

func (info *ERowInfo) UpdateDuplicateRowState()

func (*ERowInfo) UpdateEditedRowState

func (info *ERowInfo) UpdateEditedRowState()

func (*ERowInfo) UpdateExistsRowState

func (info *ERowInfo) UpdateExistsRowState()

func (*ERowInfo) UpdateFsDifferRowState

func (info *ERowInfo) UpdateFsDifferRowState()

type ERowTermIO

type ERowTermIO struct {
	// contains filtered or unexported fields
}

func NewERowTermIO

func NewERowTermIO(erow *ERow) *ERowTermIO

func (*ERowTermIO) AddToRead

func (tio *ERowTermIO) AddToRead(b []byte)

func (*ERowTermIO) Close

func (tio *ERowTermIO) Close() error

func (*ERowTermIO) Init

func (tio *ERowTermIO) Init(tf *TerminalFilter)

func (*ERowTermIO) Read

func (tio *ERowTermIO) Read(b []byte) (int, error)

func (*ERowTermIO) WriteOp

func (tio *ERowTermIO) WriteOp(op interface{}) error

type EdAnnotationsRequester

type EdAnnotationsRequester int
const (
	EdAnnReqGoDebug EdAnnotationsRequester = iota
	EdAnnReqInlineComplete
)

type Editor

type Editor struct {
	UI                *ui.UI
	HomeVars          *HomeVars
	Watcher           fswatcher.Watcher
	RowReopener       *RowReopener
	GoDebug           *GoDebugManager
	LSProtoMan        *lsproto.Manager
	InlineComplete    *InlineComplete
	Plugins           *Plugins
	EEvents           *EEvents // editor events (used by plugins)
	FsCaseInsensitive bool     // filesystem
	// contains filtered or unexported fields
}

func NewEditor

func NewEditor(opt *Options) (*Editor, error)

func (*Editor) ActiveERow

func (ed *Editor) ActiveERow() (*ERow, bool)

func (*Editor) CanModifyAnnotations

func (ed *Editor) CanModifyAnnotations(req EdAnnotationsRequester, ta *ui.TextArea, option string) bool

func (*Editor) Close

func (ed *Editor) Close()

func (*Editor) DeleteERowInfo

func (ed *Editor) DeleteERowInfo(name string)

func (*Editor) ERowInfo

func (ed *Editor) ERowInfo(name string) (*ERowInfo, bool)

func (*Editor) ERowInfoKey

func (ed *Editor) ERowInfoKey(name string) string

func (*Editor) ERowInfos

func (ed *Editor) ERowInfos() []*ERowInfo

func (*Editor) ERows

func (ed *Editor) ERows() []*ERow

func (*Editor) EnsureOneColumn

func (ed *Editor) EnsureOneColumn()

func (*Editor) Error

func (ed *Editor) Error(err error)

func (*Editor) Errorf

func (ed *Editor) Errorf(f string, a ...interface{})

func (*Editor) GoodRowPos

func (ed *Editor) GoodRowPos() *ui.RowPos

func (*Editor) Message

func (ed *Editor) Message(s string)

func (*Editor) Messagef

func (ed *Editor) Messagef(f string, a ...interface{})

func (*Editor) NewColumn

func (ed *Editor) NewColumn() *ui.Column

func (*Editor) NodeERow

func (ed *Editor) NodeERow(node widget.Node) (*ERow, bool)

func (*Editor) ReadERowInfo

func (ed *Editor) ReadERowInfo(name string) *ERowInfo

func (*Editor) RunAsyncBusyCursor

func (ed *Editor) RunAsyncBusyCursor(node widget.Node, fn func(done func()))

Caller should call done function in the end.

func (*Editor) SetAnnotations

func (ed *Editor) SetAnnotations(req EdAnnotationsRequester, ta *ui.TextArea, on bool, selIndex int, entries []*drawer4.Annotation)

func (*Editor) SetERowInfo

func (ed *Editor) SetERowInfo(name string, info *ERowInfo)

type GDDataIndex

type GDDataIndex struct {
	sync.RWMutex // used internally, not to be locked outside
	// contains filtered or unexported fields
}

GoDebug data Index

func NewGDDataIndex

func NewGDDataIndex(ed *Editor) *GDDataIndex

func (*GDDataIndex) FilesIndex

func (di *GDDataIndex) FilesIndex(name string) (int, bool)

func (*GDDataIndex) FilesIndexKey

func (di *GDDataIndex) FilesIndexKey(name string) string

type GDFileMsgs

type GDFileMsgs struct {
	// contains filtered or unexported fields
}

func NewGDFileMsgs

func NewGDFileMsgs(n int) *GDFileMsgs

type GDLineMsg

type GDLineMsg struct {
	// contains filtered or unexported fields
}

type GDLineMsgs

type GDLineMsgs struct {
	// contains filtered or unexported fields
}

type GoDebugInstance

type GoDebugInstance struct {
	// contains filtered or unexported fields
}

type GoDebugManager

type GoDebugManager struct {
	// contains filtered or unexported fields
}

func NewGoDebugManager

func NewGoDebugManager(ed *Editor) *GoDebugManager

func (*GoDebugManager) AnnotationFind

func (gdm *GoDebugManager) AnnotationFind(s string) error

func (*GoDebugManager) CancelAndClear

func (gdm *GoDebugManager) CancelAndClear()

func (*GoDebugManager) Printf

func (gdm *GoDebugManager) Printf(format string, args ...interface{})

func (*GoDebugManager) RunAsync

func (gdm *GoDebugManager) RunAsync(reqCtx context.Context, erow *ERow, args []string) error

func (*GoDebugManager) SelectAnnotation

func (gdm *GoDebugManager) SelectAnnotation(rowPos *ui.RowPos, ev *ui.RootSelectAnnotationEvent)

func (*GoDebugManager) SelectERowAnnotation

func (gdm *GoDebugManager) SelectERowAnnotation(erow *ERow, ev *ui.TextAreaSelectAnnotationEvent)

func (*GoDebugManager) UpdateUIERowInfo

func (gdm *GoDebugManager) UpdateUIERowInfo(info *ERowInfo)

type HomeVars

type HomeVars struct {
	// contains filtered or unexported fields
}

func NewHomeVars

func NewHomeVars() *HomeVars

func (*HomeVars) Decode

func (hv *HomeVars) Decode(filename string) string

func (*HomeVars) Encode

func (hv *HomeVars) Encode(filename string) string

func (*HomeVars) ParseToolbarVars

func (hv *HomeVars) ParseToolbarVars(strs []string, caseInsensitive bool)

type InfoFloatBoxWrap

type InfoFloatBoxWrap struct {
	// contains filtered or unexported fields
}

func NewInfoFloatBox

func NewInfoFloatBox(ed *Editor) *InfoFloatBoxWrap

func (*InfoFloatBoxWrap) Cancel

func (ifbw *InfoFloatBoxWrap) Cancel()

func (*InfoFloatBoxWrap) NewCtx

func (ifbw *InfoFloatBoxWrap) NewCtx(ctx context.Context) context.Context

type InlineComplete

type InlineComplete struct {
	// contains filtered or unexported fields
}

func NewInlineComplete

func NewInlineComplete(ed *Editor) *InlineComplete

func (*InlineComplete) CancelAndClear

func (ic *InlineComplete) CancelAndClear()

func (*InlineComplete) CancelOnCursorChange

func (ic *InlineComplete) CancelOnCursorChange()

func (*InlineComplete) Complete

func (ic *InlineComplete) Complete(erow *ERow, ev *ui.TextAreaInlineCompleteEvent) bool

func (*InlineComplete) IsOn

func (ic *InlineComplete) IsOn(ta *ui.TextArea) bool

type InternalCmd

type InternalCmd struct {
	Name      string
	Fn        InternalCmdFn
	NeedsERow bool
	Detach    bool // run outside UI goroutine (care must be taken)
}

type InternalCmdArgs

type InternalCmdArgs struct {
	Ctx  context.Context
	Ed   *Editor
	ERow *ERow // could be nil
	Part *toolbarparser.Part
}

type InternalCmdFn

type InternalCmdFn func(args *InternalCmdArgs) error

type OpenFileERowConfig

type OpenFileERowConfig struct {
	FilePos *parseutil.FilePos
	RowPos  *ui.RowPos

	CancelIfExistent      bool
	NewIfNotExistent      bool
	NewIfOffsetNotVisible bool

	//FlashRowsIfNotFlashed bool
	FlashVisibleOffsets bool // flashes rows if not visible
}

type Options

type Options struct {
	Font        string
	FontSize    float64
	FontHinting string
	DPI         float64

	TabWidth     int
	WrapLineRune int

	ColorTheme     string
	CommentsColor  int
	StringsColor   int
	ScrollBarWidth int
	ScrollBarLeft  bool
	Shadows        bool

	SessionName string
	Filenames   []string

	UseMultiKey bool

	Plugins string

	LSProtos RegistrationsOpt
}

type Plug

type Plug struct {
	Path   string
	Plugin *plugin.Plugin
}

type Plugins

type Plugins struct {
	// contains filtered or unexported fields
}

func NewPlugins

func NewPlugins(ed *Editor) *Plugins

func (*Plugins) AddPath

func (p *Plugins) AddPath(path string) error

func (*Plugins) RunAutoComplete

func (p *Plugins) RunAutoComplete(ctx context.Context, cfb *ui.ContextFloatBox) (_ error, handled bool)

Runs all plugins until it finds one that returns handled=true and has no errors.

func (*Plugins) RunToolbarCmd

func (p *Plugins) RunToolbarCmd(erow *ERow, part *toolbarparser.Part) bool

type PostFileSaveEEvent

type PostFileSaveEEvent struct {
	Info *ERowInfo
}

type PostNewERowEEvent

type PostNewERowEEvent struct {
	ERow *ERow
}

type PreRowCloseEEvent

type PreRowCloseEEvent struct {
	ERow *ERow
}

type RegistrationsOpt

type RegistrationsOpt struct {
	// contains filtered or unexported fields
}

implements flag.Value interface

func (*RegistrationsOpt) MustSet

func (ro *RegistrationsOpt) MustSet(s string)

func (*RegistrationsOpt) Set

func (ro *RegistrationsOpt) Set(s string) error

func (*RegistrationsOpt) String

func (ro *RegistrationsOpt) String() string

type RowReopener

type RowReopener struct {
	// contains filtered or unexported fields
}

func NewRowReopener

func NewRowReopener(ed *Editor) *RowReopener

func (*RowReopener) Add

func (rr *RowReopener) Add(row *ui.Row)

func (*RowReopener) Reopen

func (rr *RowReopener) Reopen()

type RowState

type RowState struct {
	TbStr         string
	TbCursorIndex int
	TaCursorIndex int
	TaOffsetIndex int
	StartPercent  float64
}

Used in sessions and reopenrow.

func NewRowState

func NewRowState(ed *Editor, row *ui.Row) *RowState

func (*RowState) OpenERow

func (state *RowState) OpenERow(ed *Editor, rowPos *ui.RowPos) (*ERow, bool, error)

func (*RowState) RestorePos

func (state *RowState) RestorePos(erow *ERow)

type RowStateChangeEEvent

type RowStateChangeEEvent struct {
	ERow  *ERow // duplicate rows also emit state change events.
	State ui.RowState
	Value bool // the new value
}

type Session

type Session struct {
	Name      string
	RootTbStr string
	Columns   []*ColumnState
}

func NewSessionFromEditor

func NewSessionFromEditor(ed *Editor) *Session

type Sessions

type Sessions struct {
	Sessions []*Session
}

func NewSessions

func NewSessions(filename string) (*Sessions, error)

type TerminalFilter

type TerminalFilter struct {
	// contains filtered or unexported fields
}

func NewTerminalFilter

func NewTerminalFilter(erow *ERow) *TerminalFilter

func NewTerminalFilter2

func NewTerminalFilter2(tio TerminalIO, erow *ERow) *TerminalFilter

func (*TerminalFilter) Close

func (tf *TerminalFilter) Close() error

func (*TerminalFilter) Read

func (tf *TerminalFilter) Read(p []byte) (int, error)

func (*TerminalFilter) Write

func (tf *TerminalFilter) Write(p []byte) (int, error)

type TerminalIO

type TerminalIO interface {
	Init(tf *TerminalFilter)

	Read([]byte) (int, error) // input interface
	AddToRead([]byte)         // add input internally to be read

	WriteOp(interface{}) error // accepted types: {[]byte,string}

	Close() error
}

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL