Coder Social home page Coder Social logo

koder's Introduction

Koder icon Koder

Koder is a code editor built using Scintilla editing component.

Screenshot

Dependencies

  • Scintilla >= 5.1.4
  • Lexilla
  • yaml-cpp
  • Additional lexers for Haiku specific file types
  • GTest (to run the tests)

Building

Koder uses makefile_engine. Invoke make in root directory.

Installation

Copy all files from data directory to Koder directory in any non-packaged/data folder.

Running tests

make check

Contributing

This project follows Haiku coding guidelines (more or less).

When implementing new features, bear in mind that Koder is an editor and not an IDE. A good benchmark for new features is whether it works on a file or a group of files. In Koder 1 window = 1 file.

That being said, creating interfaces to talk with an IDE is fine. This approach comes from Haiku philosophy of having small programs doing one thing and talking to each other. Like in Unix, but with GUI.

Release checklist

  • Check if all unit tests pass.
  • Update translations and credits in About window
  • Update README, changelog and screenshot
  • Create release branch
  • In release branch:
    • Change release date in changelog
    • Disable debug and symbols in makefile
    • Change version to final in rdef
    • Commit "Release {version}"
    • Create tag and a release
  • In master branch:
    • Change release date in changelog and add a new version
    • Bump version in rdef
    • Commit "Bump to {next-version}-dev"

koder's People

Contributors

armanhayots avatar codeforevolution avatar extrowerk avatar kapix avatar konrad1977 avatar roired avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

koder's Issues

JavaScript support?

Thanks for making Koder! I love using it, but it would be awesome if it had JavaScript support ... not really sure what is involved in that. Can we use anything from SciTE or Textadept?

Add a Find history

Add a history of past search terms as a popup menu in the Find window.
Again, maybe some Pe code can be lifted for that.

Implement jump-to-line feature

Like in Pe in left-bottom corner. It would be great to specify the line at opening too, to let things open for example from TextSearch or grep with defined line.

Selective stacking of dropped files

Depending where a user drops files on a Koder window, those files could either be stacked onto the current window, or opened in separate windows (stacked or not according to the settings).

For example, files dropped onto the tool bar opens stacked to the current window, dropped anywhere else opens with a new window. As visual feedback the mouse pointer could change.

Add supported mime-types

Koder supports some different source file type (like C, Python, etc.) but it doesn't show up in Tracker right click menu as supported editor. I suppose Koder doesn't define the supported mime-types. It should define the same like Pe does.

Add menu item "Stack windows"

Maybe in the "View" menu. It'll stack all open Koder windows on the current workspace. Maybe even add a tool bar icon for that?

Window content blinking at resize

At resizing window the content blinking for me. The content shouldn't blink. Maybe Koder should use double buffering for drawing things.

Find window does not remember options

Notepad++ remembers what you selected for match case / whole words / backwards / wrap around across all sessions. It would be very nice if Pe did also.

Koder hangs under recent Haiku builds & segfaults under guarded heap

I am on hrev52355, and just today took the Scintilla upgrade from 4.1.0-3 to 4.1.1-1.

Ever since then, Koder hangs rather regularly (i.e. all windows stop redrawing and CPU use goes to 100%.) Attaching the debugger shows it's somehow looping in malloc() in TLSBlock code. I tried running under MALLOC_DEBUG=g, but it immediately crashed during bitmap creation.

Add a tool to launch Koder from the command line

Pe has lpe, which allows you to launch Pe from the command line, and will not exit until you've closed the newly-opened Pe window for that file (which means you can use it as Git editor, for instance.) Pe places this binary and only this binary in PATH; i.e. the main Pe binary is not in PATH.

It seems that launching Koder from the command line is kind of broken anyway (i.e. if you use a relative rather than absolute path, it looks for the file starting in ~ and not pwd.)

Windows don't cascade

When opening several files at once, they should cascade. Right now they are opened exactly on top of each other.
Also nice would be to automatically stack them with S&T.

Add status bar

It would be nice to have a status bar indicating some helpful details such as the current line/column of the caret, detected file format (or active syntax highlighter), whether the document has unsaved changes, and possibly items that might impact editing such as the state of caps lock.

Multiline find & replace

Koder should be able to find and replace strings that span multiple lines.
For that, it would be nice to have multiline text boxes for find and replace strings, instead of the current single line text control.

Maybe some Pe code can be lifted for that.

Change displayed toolbar icons

Suggestion:

  • Open file
  • Reload (revert to last saved version)
  • Save file (with the "disabled" icon when there are no unsaved changes)
  • Save as...
  • --------- Separator
  • Undo
  • Redo
  • --------- Separator
  • Whitespaces on/off
  • Softwrap on/off
  • --------- Separator
  • Preferences
  • Find

Add more navigation keyboard shortcuts

It would be nice to have some shortcuts for navigating to the beginning/end of a document. Pe implements these as cmd+home/end, as do various other graphical editors I use.

Add status bar

The functionality of Pe's and StyledEdit's status bar is something I use quite often. That is, being able to navigate the filesystem to open files and folders. As it's a bit unintuitive to get to the drill-down navigation by clicking on the line number, I suggest using a symbol like http://unicode.scarfboy.com/dhkupefwz.html?s=U%2B2388 . Looks a bit like a nautical wheel...

Also, while Koder as the obvious line numbers, there's no column number for the caret. To be complete, though, I suggest "line, column" like Pe does.

There could be more info and functionality down there, like StyledEdit's indicator for read-only files, which acts as pop-up menu to "Unlock file". Not sure something similar for encoding is needed...

Split editing view

Pe has this (click-drag the little bar above the horizontal scrollbar).

Autoscroll when selecting

Left-click anywhere in the window and move the mouse down to select text. When you reach the window border the text should scroll under the mouse cursor to keep selecting test lines.

Add quick Find commands

Pe has some very handy Find shortcuts:

"Find again" - ALT+G
"Find selection" - ALT+H - (finds the currently selected string)
"Incremental search" ALT+I - (after ALT+I entering characters starts a 'live-search', i.e. jumps to the first match)

"Replace & find - ALT+T (the 'ALT+G' for replacing)

Add functions overview

Like Pe's "f(x)" pop-up menu to show all the functions and pragmas in the file and jump to them when selected.

Hide show toolbar does not work

This a bug report based on latest revision from github. (So its not the one in HaikuDepot).

  • Show hide toolbar from menu doesnt work.
  • Show hide from Settings works, but after reload of Koder its gone.

Add "Bookmarks" as attributes to a file

Let the user save positions in a file as bookmarks that are saved as cursor positions in attributes with the file.
Add a menu to display all bookmarked positions in a separate window to manage (=delete) and jump to them with a double-click.

Horizontal scrollbar is way too large

It seems to be stuck at some fixed length rather than dynamically changing based on the longest line (although I note Pe has the same problem...)

Change "Go to line..." keycombo, add shortcut

ALT+G is normally used for "Find next". I suggest Pe's ALT+, instead and change or maybe even remove the keycombo for "Koder preferences...". Once you've configured Koder, you probably don't need them as often.

The "Go to line..." could also be available with a double-click anywhere on the line number column (and when clicking on the "line&column" in the status bar, if that is to be implemented).

Implement a toolbar

A toolbar for easy access to some features would be great.
New, Save, Line wrap would be great to have.

Very large syntax-highlighted files are slow to work with

e.g. generate a 3000+-line diff by doing git diff HEAD~20 >out.diff in the Haiku repo, and try to use the resulting diff in Koder. It will spike to 100% CPU quite often as you page up/down/etc. through the file. Notepad++ handles such files perfectly fine, so the issue it seems is not with Scintilla.

Allow several views of the same file

It's often useful to view different sections of a file side by side.
Pe and other editor use a little splitter-widget above the vertical scrollbar for that. Pe is limiting that to one split, i.e. you can only see two locations of your file.

I wonder if it wouldn't be nicer to make some sort of clone of the entire window. People could then re-arrange any number of views on their file horizontally or vertically, and use S&T to stick stuff together.

Of course actions in one window have to effect their clones, i.e. text changes have to propagate (but without scrolling, e.g. ini case you inserted/deleted lines).
Such cloned windows should be easily recognizable. Watermark? Slight tinted background?

Implement right-click menu

Right click on selection deselects everything, but left click does the same. It would be better to get a right click menu with standard command shortcutts like "copy", "paste", etc...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.