Coder Social home page Coder Social logo

open-markup-editor's Introduction

OME owl Open Markup Editor

An okay markup editor designed for multiple markup languages and fully customizable HTML rendering.

Open Markup Editor in action!

Built-in Features

  • Markup Support:
  • Render themes!
    • Comes with GitHub and a Default theme
  • Custom colorization
    • Windows 10+ automatic adapting based upon current color scheme
  • Custom fonts
  • Automatic file reloading on change
  • Full CodeMirror editor pack
    • All CodeMirror themes
    • vim, emacs, sublime keybinding support
    • Tabs or spaces, along with default spaces per tab
  • And more!

Pluggability

A key feature of OME is that of modularity, made possible through NPM modules named Packs.

Through this system, four different types of packs can be created:

The purpose of these is outlined in the primary packs document with further details listed on each pack type's individual documentation.

Installation

Download the latest release and install as below (or otherwise).

Arch Linux / Manjaro

Download the open-markup-editor-MAJOR.MINOR.PATCH.pacman file and install by issuing the following in the terminal:

# sudo pacman -U open-markup-editor-MAJOR.MINOR.PATCH.pacman

Mac OS

Mount the Open.Markup.Editor-MAJOR.MINOR.PATCH.dmg file and extract the Open Markup Editor.app application into wherever you wish for OME to be installed to. Once this is done, right-click the app and select Open.

Windows

Either download and run the Open.Markup.Editor.Setup-2.3.0.exe or Open.Markup.Editor-2.3.0.exe. The first file installs OME system-wide while the second file can be considered as portable.

Building

Clone this repository, then:

# cd open-markup-editor
# npm i

After this, either run npm run start to start OME for development or npm run dist to build packages/installers for your current platform.


... this document and those in docs/ have been happily written in Open Markup Editor. :)

open-markup-editor's People

Contributors

dependabot[bot] avatar kettek avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar

Forkers

serafdossantos

open-markup-editor's Issues

Allow customizing default new file type

At the moment we are automatically using '.md' for new files. We should allow this to be customized to our list of extensions provided by our packs. This should be implemented in our core extension. This might necessitate having a list of supported file types/extensions held in a location other than our markup pack manager.

Reload files when file changes

It would be nice to have a system for indicating and notifying the user that an open file has been changed. Indications would potentially be marked by the file's tab's text being italicized. Notification would be upon focusing a tab (if current, simply notify).

Other functionality notes:

  • Prompt should be: "Ignore", "Ignore for Now", "Reload"
  • User settings:
    • Always ignore; always reload

Add Github Dark Theme

Might as well! Hopefully there's a dark mode version of the github theme library used in the current github theme.

Implement tabs bar scrolling

The entire tab bar becomes unusable when too many files are open. This is due to:

  • Tabs sharing space in the same flexbox with the icons for new, open, save, as well as settings.
  • The tabs flexbox space not maintaining a minimum width for each tab and overflowing beyond the space available.

To fix this, we should separate the control icons from the tabs element. Likely as such: CONTROLS, TABS, SETTINGS

TABS would then be either a grid or flexbox(w/ minimum width) that has javascript for detecting scroll area and providing left/right arrow tab scrolling of some sort.

Org Mode markup pack :enhancement:

First of all, thank you for sharing your work.

I would really like to see support for org mode. Just as a suggestion for another neat markup pack, if it is feasible without much effort.

Fix remaining process on Windows

When the application is closed via a window close event, it seems that the electron process remains running. This causes a kill to be necessary.

Use last opened file for open file dialog

As it says. When a file is opened, its location should be recorded and used for future file open dialogs. Alternatively, file open dialogs could use the location of the currently opened file.

Implement Popup Error/Info/Warning System

We need a general informational popup system to notify the user of general failures or warnings based upon their actions or during initial enable/load steps. Although it may be useful to have a modal popup, for now we should have a general popup section that can hold various popups that expire after some time has passed. It seems the norm to place such a section in a floating area positioned on the bottom-right of the main window.

File->Rename

Adjacent to the Save and Save As menu items there should also be a Rename item.

Fix opening files in existing process

When files are opened via the file manager for an existing OME process on Windows, the program attempts to open passed flags as files as well. We should strip out flag-like arguments for file processing or restrict open-able files to be ones supported by the editor.

Prevent Incorrect Pack Installation

Packs should be denied installation if they're installing as the incorrect type. This could be derived from the filename but should probably be stored as a field in package.json or similar.

Bi-directional text highlighting

It would be a nice feature if selected text on the left shows up on the right and vice versa. This may be outside of the functionalities of the editor and rendering systems, but would be useful.

Create Bogus Left-Right Synch

If a markup pack doesn't support line-based view synchronization then we should have a basic enable-able bogus synchronization that is based upon percentage of scroll on the editor view.

Add logging

A log should be used and created in the app's userData directory. This should be writable by both the main and renderer. Possibly we should open the file for writing in main and use IPC to write from renderer.

This may require a new library akin to electron-app-settings but for logging. Will have to research if one already exists.

Show recently opened files in blank view

It would be nicer to show recently opened files in the main view when no files are opened.

Also should probably add the owl somewhere there. Potentially split 30/70 with the owl on the left and the recent files on the right.

Spellchecker Support

It would be nice to have spellcheck support -- however, CodeMirror does not have any way, afaik, to use the native spellcheckers. This means we would have to use typo.js that forces us to include spelling dictionaries... not the best.

It might be worthwhile to look into a non-CodeMirror editor pack that supports spellchecking.

Add pack version management and updating

This shouldn't be too hard to implement. Basically we would set a GET request using github's releases API ( see https://developer.github.com/v3/repos/releases/ ), use that information to check against ours (using some semver lib), and if it is greater, prompt/automatically download and pass it to our regular install step.

  • GET github repo releases
  • Check semver for > than our current package
  • Download latest to a temp dir and install (with prompt unless user has checked auto-update).

This will necessitate a new entry in either the pack's package.json or in the pack code in index.js. It could also be acquired automatically if the pack has a github repository set. It would simply get the repo address from package.json, append '/releases' or whatever it is, then do the above steps.

Unintuitive settings vs. normal mode

At the moment, hitting settings slides in a settings window. This is fine, however basic responses, likely because of how browsers work, make me glance and move towards the general tab view.

Solution: Either make the settings spawn a tab or hide the tab bar while the settings window is open.

Watch/notify on file deletion

This should be done in a similar manner as the file changing on-disk system. tab should likely become red(?) or similar.

Automatic Updating

This would be nice -- research electron-updater(?) as well as electron-builder's integrated updating system.

Check if files are already open

We should ensure that a file is not loaded twice. If a user wants to open multiple copies of the same file, they can use Duplicate or otherwise.

Properly use package.json versioning in packs

Multiple versions of packs should be installable. Entries in the packs subsection should append their version information, as derived from package.json, to their proper names also from package.json

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.