A Programmer's Text Editor

The de Editor Build Status

de is a programmer's editor. (Where that programmer happens to be driusan.)

It's kind of like a bastard child of vim and Plan 9's acme editor, because vim feels inadequate on a computer with a mouse after using acme, and acme feels inadequate on a computer with a keyboard after using vi.

Like vim, it's a modal editor with syntax highlighting that uses hjkl for movement. Like acme, it attempts to exploit your current OS environment instead of replacing it and tries to make the mouse useful.

See USAGE.md for usage instructions.

de screenshot

Features

  • Syntax highlighting (currently only Go and PHP with some basic markdown.)
  • vi-like keybindings and philosophy.
  • acme-like mouse bindings and philosophy.
  • Ability to write plugins in Go. See PLUGINS.md.
  • Ability to plumb with p9p plumber. See PLUMBING.md

de screenshot

Limitations and Bugs

  • vi-like functionality not fully implemented (most notably some movement verbs like '%' are missing, and see notes in issue #1.)
  • Can not open multiple files/windows at a time. (if your workflow is like mine, it means you often save and quit, do something in the shell, and then relaunch your editor. The startup time should be fast enough to support this style of workflow.)

Installation

It should be installable with the standard go tools:

go get -u github.com/driusan/de/...

Then as long as $GOPATH/bin is in your path, you can launch with de [filename]

Community

There's now a #de channel on gophers.slack.com for users of this editor.

Owner
Dave MacFarlane
Professional Rubber Duck
Dave MacFarlane
Comments
  • RFC: Community Plugins

    RFC: Community Plugins

    Cool project! Two thoughts immediately spring to mind.

    First, like other resources, I would expect a community portal to a list of plugins, even if it's just a separate repo linked in README.md.

    2a, it would be nice to write and distribute plugins in a way independent of the project source. For example, IntelliJ IDEA plugins aren't distributed and developed as subfolders of the entire IDEA source tree.

    2b, that might mean using the new Go plugin package, but it might not.

    Hope this was valuable!

  • (How) Can I open a file's parent directory?

    (How) Can I open a file's parent directory?

    I'm generally fine with only having a single buffer open, but I'd like to be able to return to the parent directory in file-listing mode.

    I'm fond of netrw/vinegar's - keybinding for this, but I think acme let me run .. in the tagbar to do the same.

  • ./main.go:174: undefined: dewindow

    ./main.go:174: undefined: dewindow

    am i doing something wrong ?

    go get -u github.com/driusan/de/...
    x-MacBook-Pro:de apple$ go run main.go 
    # command-line-arguments
    ./main.go:174: undefined: dewindow
    x-MacBook-Pro:de apple$ 
    
    
  • Chat room?

    Chat room?

    Would you be interested in having a slack room, or a gitter+irc channel? I feel a little silly creating tickets for some of the questions I've got. Slack is probably the most pleasant experience for someone living in the room, but gitter+freenode-irc is a great compromise with history-search, lots of integrations, and open protocols.

  • Help needed regarding shiny

    Help needed regarding shiny

    Hello @driusan

    I'm sorry to file the issue here, it's not regarding the de editor but rather about shiny.

    I've been trying to install the shiny gui lib but when I run go get github.com/golang/exp/shiny/... it throws up the following error.

    ❯ go get github.com/golang/exp/shiny/...
    can't load package: package github.com/golang/exp/shiny/driver: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver expects import "golang.org/x/exp/shiny/driver"
    can't load package: package github.com/golang/exp/shiny/driver/gldriver: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/gldriver expects import "golang.org/x/exp/shiny/driver/gldriver"
    can't load package: package github.com/golang/exp/shiny/driver/internal/drawer: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/internal/drawer expects import "golang.org/x/exp/shiny/driver/internal/drawer"
    can't load package: package github.com/golang/exp/shiny/driver/internal/errscreen: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/internal/errscreen expects import "golang.org/x/exp/shiny/driver/internal/errscreen"
    can't load package: package github.com/golang/exp/shiny/driver/internal/event: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/internal/event expects import "golang.org/x/exp/shiny/driver/internal/event"
    can't load package: package github.com/golang/exp/shiny/driver/internal/lifecycler: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/internal/lifecycler expects import "golang.org/x/exp/shiny/driver/internal/lifecycler"
    can't load package: package github.com/golang/exp/shiny/driver/internal/swizzle: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/internal/swizzle expects import "golang.org/x/exp/shiny/driver/internal/swizzle"
    can't load package: package github.com/golang/exp/shiny/driver/internal/x11key: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/internal/x11key expects import "golang.org/x/exp/shiny/driver/internal/x11key"
    can't load package: package github.com/golang/exp/shiny/driver/windriver: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/windriver expects import "golang.org/x/exp/shiny/driver/windriver"
    can't load package: package github.com/golang/exp/shiny/driver/x11driver: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/driver/x11driver expects import "golang.org/x/exp/shiny/driver/x11driver"
    /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/iconvg/rasterizer.go:13:2: use of internal package not allowed
    can't load package: package github.com/golang/exp/shiny/screen: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/screen expects import "golang.org/x/exp/shiny/screen"
    can't load package: package github.com/golang/exp/shiny/text: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/text expects import "golang.org/x/exp/shiny/text"
    can't load package: package github.com/golang/exp/shiny/widget: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/widget expects import "golang.org/x/exp/shiny/widget"
    can't load package: package github.com/golang/exp/shiny/widget/node: code in directory /Users/eklavya/.gvm/pkgsets/go1.8/global/src/github.com/golang/exp/shiny/widget/node expects import "golang.org/x/exp/shiny/widget/node"
    
    

    Still further, when I try to run the sample basic example from the shiny repo it just fails and prints out an obscure

    ❯ go run main.go
    signal: killed
    

    Could you please help me out a bit :)

  • Missing dependencies

    Missing dependencies

    I downloaded 30 minutes ago. I think something is missing. Should I "go get" something other than de itself?

    go get github.com/driusan/de

    golang.org/x/exp/shiny/driver/internal/win32

    c:\gopath\src\golang.org\x\exp\shiny\driver\internal\win32\zsyscall_windows.go:15: undefined: windows.NewLazySystemDLL

    github.com/driusan/de/renderer

    c:\gopath\src\github.com\driusan\de\renderer\defaultsizecalcer.go:32: MonoFontFace.Metrics undefined (type font.Face has no field or method Metrics) c:\gopath\src\github.com\driusan\de\renderer\defaultsizecalcer.go:47: lineSize.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\defaultsizecalcer.go:48: lineSize.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:23: r.Min.X.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:23: r.Max.X.Floor undefined (type fixed.Int26_6 has no field or method Floor) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:23: r.Min.Y.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:23: r.Max.Y.Floor undefined (type fixed.Int26_6 has no field or method Floor) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:40: chr.Loc.Min.X.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:40: chr.Loc.Min.Y.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:41: chr.Loc.Max.X.Ceil undefined (type fixed.Int26_6 has no field or method Ceil) c:\gopath\src\github.com\driusan\de\renderer\imagemap.go:41: too many errors

  • undo stack, preferably using OT

    undo stack, preferably using OT

    probably the most painful thing about learning a new editor is making a destructive mistake. Also, leaving focus on the editor while a cat is near the keyboard.

    There's a number of approaches, but I'd love to use something compatible with Operational transformation. I know my way around CRDTs, but I don't yet know how to implement anything on that wiki page.

    Regardless, each buffer operation will need to be wrapped so a handler can be triggered. Initial implementation could just be a scratch file and a single operation undo (like it's 1995!).

  • press & hold motion keys don't repeat (mac)

    press & hold motion keys don't repeat (mac)

    Since we're making due without the nearly-infinite motion keys of vim, I'd like to be able to press-and-hold j or k to move around.

    I'm on a mac. Does press-and-hold work elsewhere, or have I found a feature I get to attempt implementing?

  • Add vi-like mappings for 'I' and 'A'

    Add vi-like mappings for 'I' and 'A'

    This PR adds mappings for 'I' and 'A', my favorite vi shortcuts.

    'I' starts insert mode before the first non-whitespace character on the current line. If the line is all whitespace, it starts insert mode at the end of the line.

    'A' starts insert mode at the end of the line.

  • golint straightforward fixes in all files

    golint straightforward fixes in all files

    This leaves the following golint warnings:

    main.go:28:2: exported const ButtonLeft should have comment (or a comment on this block) or be unexported
    actions/clipboard.go:8:1: exported function PasteClipboard should have comment or be unexported
    actions/clipboard.go:51:1: exported function CopyClipboard should have comment or be unexported
    actions/clipboard.go:73:1: exported function CutClipboard should have comment or be unexported
    actions/deletecursor.go:7:1: exported function DeleteCursor should have comment or be unexported
    actions/execute.go:21:1: exported function PerformAction should have comment or be unexported
    actions/execute.go:43:1: exported function PerformTagAction should have comment or be unexported
    actions/execute.go:79:1: exported function OpenOrPerformAction should have comment or be unexported
    actions/execute.go:119:1: exported function RunOrExec should have comment or be unexported
    actions/find.go:7:1: comment on exported function FindNext should be of the form "FindNext ..."
    actions/find.go:38:1: exported function FindNextOrOpen should have comment or be unexported
    actions/find.go:72:1: exported function FindNextOrOpenTag should have comment or be unexported
    actions/insertcursor.go:7:1: exported function InsertSnarfBuffer should have comment or be unexported
    actions/movecursor.go:7:1: exported function MoveCursor should have comment or be unexported
    actions/open.go:117:1: exported function OpenFile should have comment or be unexported
    actions/open.go:218:1: comment on exported function FocusViewport should be of the form "FocusViewport ..."
    actions/register.go:14:1: exported function RegisterAction should have comment or be unexported
    actions/savefile.go:11:5: exported var ErrNoFile should have comment or be unexported
    actions/savefile.go:13:1: exported function SaveFile should have comment or be unexported
    actions/defaults/defaultactions.go:51:1: exported function Put should have comment or be unexported
    actions/defaults/defaultactions.go:57:1: exported function Get should have comment or be unexported
    actions/defaults/defaultactions.go:70:1: exported function Exit should have comment or be unexported
    actions/defaults/defaultactions.go:78:1: exported function ForceQuit should have comment or be unexported
    actions/defaults/defaultactions.go:86:1: exported function SaveAndExit should have comment or be unexported
    actions/defaults/defaultactions.go:92:1: exported function SaveOrExit should have comment or be unexported
    actions/defaults/defaultactions.go:100:1: exported function Paste should have comment or be unexported
    actions/defaults/defaultactions.go:104:1: exported function ResetTagline should have comment or be unexported
    actions/defaults/defaultactions.go:108:1: exported function SwitchRenderer should have comment or be unexported
    actions/defaults/undo.go:14:1: exported function Undo should have comment or be unexported
    actions/defaults/viewport.go:18:1: exported function TermWidth should have comment or be unexported
    actions/defaults/viewport.go:28:1: exported function WarnAlpha should have comment or be unexported
    demodel/charbuffer.go:11:5: exported var ErrNoTagline should have comment or be unexported
    demodel/charbuffer.go:13:1: exported method CharBuffer.AppendTag should have comment or be unexported
    demodel/charbuffer.go:22:1: exported method CharBuffer.ResetTagline should have comment or be unexported
    demodel/charbuffer.go:50:1: exported method CharBuffer.LoadSnarfBuffer should have comment or be unexported
    demodel/charbuffer.go:63:1: exported method CharBuffer.JoinLines should have comment or be unexported
    demodel/charbuffer.go:105:1: exported method CharBuffer.SaveSnarfBuffer should have comment or be unexported
    demodel/model.go:54:1: comment on exported type Action should be of the form "Action ..." (with optional leading article)
    demodel/model.go:58:1: comment on exported type Position should be of the form "Position ..." (with optional leading article)
    demodel/model.go:73:6: exported type ScrollDirection should have comment or be unexported
    demodel/model.go:76:2: exported const DirectionNone should have comment (or a comment on this block) or be unexported
    demodel/viewer.go:9:5: exported var ErrUnsupportedOption should have comment or be unexported
    kbmap/kbmap.go:13:5: exported var ErrInvalid should have comment or be unexported
    kbmap/kbmap.go:14:5: exported var ErrExitProgram should have comment or be unexported
    kbmap/kbmap.go:15:5: exported var ErrScrollDown should have comment or be unexported
    kbmap/kbmap.go:16:5: exported var ErrScrollUp should have comment or be unexported
    kbmap/kbmap.go:17:5: exported var ErrScrollLeft should have comment or be unexported
    kbmap/kbmap.go:18:5: exported var ErrScrollRight should have comment or be unexported
    kbmap/kbmap.go:23:2: exported const NormalMode should have comment (or a comment on this block) or be unexported
    kbmap/normalmode.go:11:5: exported var Repeat should have comment or be unexported
    plugins/shell/shell.go:22:1: comment on exported type TSBuffer should be of the form "TSBuffer ..." (with optional leading article)
    plugins/shell/termrenderer.go:17:6: exported type TerminalRenderer should have comment or be unexported
    plugins/shell/termrenderer.go:22:1: exported method TerminalRenderer.InvalidateCache should have comment or be unexported
    plugins/shell/termrenderer.go:27:1: exported method TerminalRenderer.CanRender should have comment or be unexported
    plugins/shell/termrenderer.go:31:1: exported method TerminalRenderer.RenderInto should have comment or be unexported
    position/positions.go:10:5: exported var ErrInvalid should have comment or be unexported
    position/positions.go:24:1: comment on exported function AltDotStart should be of the form "AltDotStart ..."
    position/positions.go:30:1: comment on exported function AltDotEnd should be of the form "AltDotEnd ..."
    position/positions.go:36:1: exported function TagDotStart should have comment or be unexported
    position/positions.go:43:1: exported function TagDotEnd should have comment or be unexported
    position/positions.go:50:1: exported function TagAltDotStart should have comment or be unexported
    position/positions.go:56:1: exported function TagAltDotEnd should have comment or be unexported
    position/positions.go:63:1: exported function BuffStart should have comment or be unexported
    position/positions.go:69:1: exported function BuffEnd should have comment or be unexported
    position/positions.go:76:1: exported function PrevChar should have comment or be unexported
    position/positions.go:84:1: exported function NextChar should have comment or be unexported
    position/positions.go:91:1: exported function PrevLine should have comment or be unexported
    position/positions.go:126:1: exported function NextLine should have comment or be unexported
    position/positions.go:195:1: exported function EndOfLine should have comment or be unexported
    position/positions.go:213:1: exported function EndOfLineWithNewline should have comment or be unexported
    position/positions.go:230:1: exported function StartOfLine should have comment or be unexported
    position/positions.go:246:1: exported function CurWordStart should have comment or be unexported
    position/positions.go:270:1: exported function CurWordEnd should have comment or be unexported
    position/positions.go:292:1: exported function CurExecutionWordStart should have comment or be unexported
    position/positions.go:316:1: exported function CurExecutionWordEnd should have comment or be unexported
    position/positions.go:338:1: exported function CurTagExecutionWordStart should have comment or be unexported
    position/positions.go:345:1: exported function CurTagExecutionWordEnd should have comment or be unexported
    position/positions.go:352:1: exported function CurTagWordStart should have comment or be unexported
    position/positions.go:359:1: exported function CurTagWordEnd should have comment or be unexported
    position/positions.go:366:1: exported function NextWordStart should have comment or be unexported
    position/positions.go:381:1: exported function PrevWordStart should have comment or be unexported
    renderer/colors.go:7:1: comment on exported var NormalBackground should be of the form "NormalBackground ..."
    renderer/colors.go:9:5: exported var InsertBackground should have comment or be unexported
    renderer/colors.go:10:5: exported var DeleteBackground should have comment or be unexported
    renderer/colors.go:11:5: exported var TaglineBackground should have comment or be unexported
    renderer/colors.go:13:1: comment on exported var TextHighlight should be of the form "TextHighlight ..."
    renderer/colors.go:15:5: exported var TextColour should have comment or be unexported
    renderer/colors.go:16:5: exported var CommentColour should have comment or be unexported
    renderer/colors.go:17:5: exported var KeywordColour should have comment or be unexported
    renderer/colors.go:18:5: exported var BuiltinTypeColour should have comment or be unexported
    renderer/colors.go:19:5: exported var StringColour should have comment or be unexported
    renderer/colors.go:21:1: comment on exported var TagDelimitorColour should be of the form "TagDelimitorColour ..."
    renderer/colors.go:23:5: exported var AttributeColour should have comment or be unexported
    renderer/colors.go:24:5: exported var TagColour should have comment or be unexported
    renderer/colors.go:25:5: exported var OperatorColour should have comment or be unexported
    renderer/defaultsizecalcer.go:22:1: exported method DefaultSizeCalcer.InvalidateCache should have comment or be unexported
    renderer/defaultsizecalcer.go:25:1: exported method DefaultSizeCalcer.Bounds should have comment or be unexported
    renderer/imagemap.go:10:5: exported var ErrNoCharacter should have comment or be unexported
    renderer/imagemap.go:12:6: exported type ImageLoc should have comment or be unexported
    renderer/imagemap.go:17:6: exported type ImageMap should have comment or be unexported
    renderer/imagemap.go:25:1: exported method ImageMap.At should have comment or be unexported
    renderer/imagemap.go:34:1: comment on exported method ImageMap.Get should be of the form "Get ..."
    renderer/imagemapcacher.go:20:1: exported method DefaultImageMapper.InvalidateCache should have comment or be unexported
    renderer/imagemapcacher.go:23:1: exported method DefaultImageMapper.GetImageMap should have comment or be unexported
    renderer/init.go:7:5: exported var MonoFontFace should have comment or be unexported
    renderer/recalculatefont_darwin.go:12:1: exported function RecalculateFontFace should have comment or be unexported
    renderer/register.go:18:1: exported function RegisterRenderer should have comment or be unexported
    renderer/register.go:22:1: exported function GetRenderer should have comment or be unexported
    renderer/register.go:30:1: exported function GetNamedRenderer should have comment or be unexported
    renderer/tagline.go:21:1: exported method TaglineRenderer.InvalidateCache should have comment or be unexported
    renderer/tagline.go:26:1: exported method TaglineRenderer.CanRender should have comment or be unexported
    renderer/tagline.go:30:1: exported method TaglineRenderer.RenderInto should have comment or be unexported
    renderer/gorenderer/gosyntax.go:17:6: exported type GoSyntax should have comment or be unexported
    renderer/gorenderer/gosyntax.go:22:1: exported method GoSyntax.InvalidateCache should have comment or be unexported
    renderer/gorenderer/gosyntax.go:26:1: exported method GoSyntax.CanRender should have comment or be unexported
    renderer/gorenderer/gosyntax.go:30:1: exported method GoSyntax.RenderInto should have comment or be unexported
    renderer/gorenderer/gosyntax.go:194:1: exported function StartsLanguageDeliminator should have comment or be unexported
    renderer/gorenderer/gosyntax.go:209:1: exported function IsLanguageKeyword should have comment or be unexported
    renderer/gorenderer/gosyntax.go:283:1: exported function IsLanguageType should have comment or be unexported
    renderer/gorenderer/gosyntax.go:326:1: exported function IsEscaped should have comment or be unexported
    renderer/hex/hex.go:14:6: exported type HexRenderer should have comment or be unexported
    renderer/hex/hex.go:14:6: type name will be used as hex.HexRenderer by other packages, and that stutters; consider calling this Renderer
    renderer/hex/hex.go:16:1: exported method HexRenderer.InvalidateCache should have comment or be unexported
    renderer/hex/hex.go:18:1: exported method HexRenderer.CanRender should have comment or be unexported
    renderer/hex/hex.go:21:1: exported method HexRenderer.Bounds should have comment or be unexported
    renderer/hex/hex.go:40:1: exported method HexRenderer.GetImageMap should have comment or be unexported
    renderer/hex/hex.go:43:1: exported method HexRenderer.RenderInto should have comment or be unexported
    renderer/html/htmlsyntax.go:17:6: exported type HTMLSyntax should have comment or be unexported
    renderer/html/htmlsyntax.go:22:1: exported method HTMLSyntax.InvalidateCache should have comment or be unexported
    renderer/html/htmlsyntax.go:26:1: exported method HTMLSyntax.CanRender should have comment or be unexported
    renderer/html/htmlsyntax.go:30:1: exported method HTMLSyntax.RenderInto should have comment or be unexported
    renderer/imagerenderer/imagerender.go:10:2: a blank import should be only in a main or test package, or have a comment justifying it
    renderer/imagerenderer/imagerender.go:14:6: exported type ImageRenderer should have comment or be unexported
    renderer/imagerenderer/imagerender.go:18:1: exported method ImageRenderer.InvalidateCache should have comment or be unexported
    renderer/imagerenderer/imagerender.go:21:1: exported method ImageRenderer.Bounds should have comment or be unexported
    renderer/imagerenderer/imagerender.go:27:1: exported method ImageRenderer.CanRender should have comment or be unexported
    renderer/imagerenderer/imagerender.go:53:1: exported method ImageRenderer.RenderInto should have comment or be unexported
    renderer/imagerenderer/imagerender.go:61:1: exported method ImageRenderer.GetImageMap should have comment or be unexported
    renderer/markdown/markdownsyntax.go:17:6: exported type MarkdownSyntax should have comment or be unexported
    renderer/markdown/markdownsyntax.go:22:1: exported method MarkdownSyntax.InvalidateCache should have comment or be unexported
    renderer/markdown/markdownsyntax.go:27:1: exported method MarkdownSyntax.CanRender should have comment or be unexported
    renderer/markdown/markdownsyntax.go:31:1: exported method MarkdownSyntax.RenderInto should have comment or be unexported
    renderer/nosyntax/nosyntax.go:14:1: comment on exported type NoSyntaxRenderer should be of the form "NoSyntaxRenderer ..." (with optional leading article)
    renderer/nosyntax/nosyntax.go:20:1: exported method NoSyntaxRenderer.InvalidateCache should have comment or be unexported
    renderer/nosyntax/nosyntax.go:24:1: exported method NoSyntaxRenderer.CanRender should have comment or be unexported
    renderer/nosyntax/nosyntax.go:28:1: exported method NoSyntaxRenderer.RenderInto should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:17:6: exported type PHPSyntax should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:22:1: exported method PHPSyntax.InvalidateCache should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:27:1: exported method PHPSyntax.CanRender should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:31:1: exported method PHPSyntax.RenderInto should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:173:1: exported function StartsLanguageDeliminator should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:292:1: exported function IsLanguageType should have comment or be unexported
    renderer/phprenderer/phpsyntax.go:335:1: exported function IsEscaped should have comment or be unexported
    viewer/viewport.go:19:6: exported type Viewport should have comment or be unexported
    viewer/viewport.go:33:6: exported type RequestRerender should have comment or be unexported
    viewer/viewport.go:35:1: exported method Viewport.Rerender should have comment or be unexported
    viewer/viewport.go:39:1: exported method Viewport.GetKeyboardMode should have comment or be unexported
    viewer/viewport.go:43:5: exported var ErrKBLocked should have comment or be unexported
    viewer/viewport.go:44:5: exported var ErrInvalidViewport should have comment or be unexported
    viewer/viewport.go:46:1: exported method Viewport.ResetLocation should have comment or be unexported
    viewer/viewport.go:55:1: comment on exported method Viewport.LockKeyboardMode should be of the form "LockKeyboardMode ..."
    viewer/viewport.go:66:1: comment on exported method Viewport.UnlockKeyboardMode should be of the form "UnlockKeyboardMode ..."
    viewer/viewport.go:78:1: exported method Viewport.SetKeyboardMode should have comment or be unexported
    viewer/viewport.go:87:1: exported method Viewport.GetRenderer should have comment or be unexported
    viewer/viewport.go:91:1: exported method Viewport.SetRenderer should have comment or be unexported
    viewer/viewport.go:96:1: exported method Viewport.SetOption should have comment or be unexported
    viewer/viewport.go:124:1: exported method Viewport.RenderInto should have comment or be unexported
    
  • Execution word boundaries should be different from movement word boundaries

    Execution word boundaries should be different from movement word boundaries

    The word boundaries used for executing a text selection shouldn't be the same as the movement commands. The movement command word boundaries should be the same as in vi, but for the sake of executing a word it should be a little looser about what it considers a boundary (for instance, . and / are often part of a filename or path, so they shouldn't be considered separators when middle clicking or hitting enter.)

  • Missing textflag.h

    Missing textflag.h

    I'm trying to install de but get an error:

    # golang.org/x/exp/shiny/driver/internal/swizzle
    go/src/golang.org/x/exp/shiny/driver/internal/swizzle/swizzle_amd64.s:5:10: fatal error: textflag.h: No such file or directory
        5 | #include "textflag.h"
          |          ^~~~~~~~~~~~
    compilation terminated.```
  • build problem on windows

    build problem on windows

    unknown field 'Setsid' in struct literal of type syscall.SysProcAttr
    unknown field 'Setctty' in struct literal of type syscall.SysProcAttr
    unknown field 'Ctty' in struct literal of type syscall.SysProcAttr
    

    github.com\driusan\de\plugins\shell\shell.go

    windows golang packakge syscall dosen't contains this field

  • [WIP] actions: add Tagline command

    [WIP] actions: add Tagline command

    This is totally not ready to merge. The desire of this is to replace the ~/.de/tagline with a command which can live in ~/.de/startup. It doesn't do that yet, and it has other problems besides.

    • [ ] ResetTagline should use the value from Tagline instead of getDefaultTagline
    • [ ] Tagline should accept args containing a space, eg Tagline:Foo Bar. Perhaps quoting/escaping (ugh)? Can we just rely on startup to use complete lines, and use selection for manual execution?
  • move ~/.de to $XDG_CONFIG_HOME/de

    move ~/.de to $XDG_CONFIG_HOME/de

    most of the time, this just ends up being ~/.config/de. I used to think this was silly, but more and more tools are using it. And we're laying claim to an entire config dir, so why not?

    full spec lives at https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html#basics

A Programmer's Text Editor
A Programmer's Text Editor

The de Editor de is a programmer's editor. (Where that programmer happens to be driusan.) It's kind of like a bastard child of vim and Plan 9's acme e

Dec 8, 2022
A very religious text editor

--== Godit - a very religious text editor ==-- Screenshots: * https://nosmileface.dev/images/godit-linux1.png * https://nosmileface.dev/images/god

Dec 27, 2022
A modern and intuitive terminal-based text editor
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals.

Dec 30, 2022
Source code editor written in Go using go-gtk bindings. It aims to handle navigation effectively among large number of files.
Source code editor written in Go using go-gtk bindings. It aims to handle navigation effectively among large number of files.

tabby Source code editor written in Go using go-gtk bindings. It aims to handle navigation effectively among large number of files. screenshot: depend

Nov 16, 2022
An Enhanced Go Experience For The Atom Editor
An Enhanced Go Experience For The Atom Editor

go-plus An Improved Go Experience For The Atom Editor Github: https://github.com/joefitzgerald/go-plus Atom: https://atom.io/packages/go-plus Overview

Dec 26, 2022
Go version of Plan9 Acme Editor

Overview Go port of Rob Pike's Acme editor. Derived from ProjectSerenity but now increasingly divergent. ProjectSerenity was itself a transliteration

Dec 24, 2022
Binary editor written in Go
Binary editor written in Go

bed Binary editor written in Go Screenshot Why? Why not? Programming is so fun! I learned so much while creating this editor; handling of file pointer

Jan 5, 2023
WYSIWYG theme editor for Fyne
WYSIWYG theme editor for Fyne

fyne-theme-generator WYSIWYG theme editor for Fyne Installation go get github.com/lusingander/fyne-theme-generator Usage You can change each parameter

Jan 5, 2023
MdEdit is a Vi-like markdown editor built using Gio

MdEdit MdEdit is a Vi-like markdown editor built using Gio. It is extremely early stage software. The Vi editor lacks most functionality and might be

Jun 29, 2022
NERV Editor - A simple but peculiar text editor
NERV Editor - A simple but peculiar text editor

nerved a simple but peculiar text editor introduction nerved is a text editor bu

Oct 24, 2022
A simple command line notebook for programmers
A simple command line notebook for programmers

Dnote is a simple command line notebook for programmers. It keeps you focused by providing a way of effortlessly capturing and retrieving information

Jan 2, 2023
literature management for bio programmers
literature management for bio programmers

literature management for bio programmers

Oct 24, 2022
Command line tool for improving typing skills (programmers friendly)
Command line tool for improving typing skills (programmers friendly)

Command line tool for improving typing speed and accuracy. The main goal is to help programmers practise programming languages. Demo Installation Pyth

Jan 5, 2023
Quick and dirty debugging output for tired Go programmers
Quick and dirty debugging output for tired Go programmers

q q is a better way to do print statement debugging. Type q.Q instead of fmt.Printf and your variables will be printed like this: Why is this better t

Jan 7, 2023
Boil - A boilerplate generator cli for programmers

boil a touch wrapper for programmers that generates boilerplate files. to use: b

Jan 4, 2022
GoVWA - A web application developed to help the pentester and programmers to learn the vulnerabilities

GoVWA - A web application developed to help the pentester and programmers to learn the vulnerabilities

Feb 12, 2022
A graphical text editor
A graphical text editor

A A is a text editor inspired by the Sam and Acme text editors for the Plan 9 operating system. binary Latest Binaries https://github.com/as/a/release

Dec 13, 2022
A Programmer's Text Editor
A Programmer's Text Editor

The de Editor de is a programmer's editor. (Where that programmer happens to be driusan.) It's kind of like a bastard child of vim and Plan 9's acme e

Dec 8, 2022
A very religious text editor

--== Godit - a very religious text editor ==-- Screenshots: * https://nosmileface.dev/images/godit-linux1.png * https://nosmileface.dev/images/god

Dec 27, 2022
A modern and intuitive terminal-based text editor
A modern and intuitive terminal-based text editor

micro is a terminal-based text editor that aims to be easy to use and intuitive, while also taking advantage of the capabilities of modern terminals.

Dec 30, 2022