Giter Club home page Giter Club logo

flow-netbeans-markdown's Introduction

A NetBeans IDE plugin which adds Markdown support. This plugin provides basic syntax highlighting, HTML preview and HTML export when editing a Markdown document.

What is Markdown?

Markdown is a text-to-HTML conversion tool for web writers. Markdown allows you to write using an easy-to-read, easy-to-write plain text format, then convert it to structurally valid XHTML (or HTML).

Source: http://daringfireball.net/projects/markdown/

Installation

The plugin is available in the official NetBeans Plugin Portal Update Center.

You can also download a pre-packaged release:

Install the plugin with: Tools -> Plugins -> Downloaded

You may also compile a binary yourself with the latest development code.

  1. git clone git://github.com/madflow/flow-netbeans-markdown.git
  2. Open the folder with NetBeans (Open Project)
  3. (Configure Target Platform if needed)
  4. Choose "Create NBM" from the project menu
  5. Install the plugin with: Tools -> Plugins -> Downloaded

Requirements

  • NetBeans >= 8.0
  • "NetBeans Plugin Development" plugin must be installed if you want to compile your own binary package.

Plugin features

  • Adds Markdown to your "New File" wizard
  • Provides basic syntax highlighting
  • Provides code folding based on headers
  • Provides bread crumbs in the editor based on headers
  • Provides a table of contents in the Navigator window
  • Enables full fledged preview in the editor window
  • Exports your saved file content to an HTML document
  • Enables HTML preview of your saved file in your configured web browser
  • Lets you customize the HTML output with CSS and alien intelligence (Options->Miscellaneous->Markdown->HTML Export)
  • Supports multiple extensions over standard markdown (see PegDown, Options->Miscellaneous->Markdown->Extensions)
  • Supports auto operations(additoin and removal) for lists (Options->Miscellaneous->Markdown->Miscellaneous)

Screenshots

Editor - Source view


Editor - Preview view

Resources

flow-netbeans-markdown's People

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  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  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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

flow-netbeans-markdown's Issues

"<unrecognized project; missing plug-in?>"

I can't install this plugin on my local environment.

Specs:

  • NetBeans 8.0.2 (PHP Development dist)
  • Macbook Pro with OSX Yosemite 10.10

When I follow the 'Installation' steps, on the 2nd step 'Open the folder with NetBeans (Open Project)', NetBeans display <unrecognized project; missing plug-in?> and I can't proceed with the instalation.

Anchor points to "jump to" div

I was trying to achieve the following:

http://stackoverflow.com/a/7335259/711308

I should be able to write something like:

## Table of Contents

1. [Introduction](#intro)
2. [boobies](#boobies)
3. [pookie](#pookie)

---

## <a name="intro"></a>Introduction
This is the introduction text

<div style="height: 500px;"></div> <!-- Spacer -->

## <a name="boobies"></a>Boobies
This is the booby text :)

<div style="height: 500px;"></div> <!-- Spacer -->

## <a name="pookie"></a>Pookie
This is the pookie text :)

On click of the 'Table of contents' links, I should be able to jump to the named div, but this does not seem to work. I think it works on the first click (although it doesn't take you to the correct div), and after the first click, nothing happens.

This is a great feature of markdown, and would be so useful for creating documentation (which is what I would like it for).

You can use a div with an id (in plain HTML) to achieve the same thing, but this defeats the point of markdown (and the plugin), as you cannot use markdown within the div (So I would have to HTML code everything within the div, and then its not Markdown anymore, but its plain HTML!).

Any ideas of a fix or workaround to work in flow-netbeans-markdown? (Can I use any other markdown syntax to achieve the same thing?)

Thanks

CSS Option

It is useful if user is able to set the css file to Option of Markdown plugin.
e.g.
Plugin uses it when user run view action.
Actually, I tried to add css into source code. I think that it' good.

Currently, you are writing the all code into constructor of Markdown*Action currently.
Are there any reasons? (This is simply my question.)

Thanks.

Problems in accented characters

Hi,

When used accented characters (ã, é, ó, etc) in the text, the generated HTML displays � in place.
The solution would be respectively convert them to html entities: &atilde ;, &eacute ;, &oacute ;

Thanks in advance.

Re-integration of fork

I have recently forked your plugin to add a few little things. This turned into a coding spree which almost doubled the size of the source code. So unfortunately, I do not have small, self-contained patches for individual features. I also do not want to split the user base of this plugin or interfere with your plans for the plugin so I would prefer if my changes were re-integrated into your version.

As I am not very familiar yet with GitHub (and Git) I do not know which would be the best way to do this. I encourage you to look at my version and pick the features you like. :) I have also uploaded a pre-release so everyone can take a look without having to compile the plugin first.

Please tell me if you want me to extract a particular (set of) features as a patch!

Major changes:

  • Preview tab in the editor showing a live preview, i.e. it uses the current content of the document in the editor, not the content of the file on disk.
  • Support for the Navigator window
  • Partial support for bread crumbs
  • Code folding
  • Configurable fonts and colors for syntax highlighting

Modify background color on Preview

Hello.

I'm using Netbeans 8 with the dark look and feel and the Preview tab uses a dark background color and the font color is black so I can see almost nothing.

Is there a way to change the background color for the preview ?

Please add code completion while typing.

The Code completion only works, after typing a t and than hit Ctrl + Space. It would be better to have code completion on type. Maybe this could be handled via option.

Regards

Chris

Better HTML rendering for preview pane

I looked for ways to improve the preview pane since Swing's HTML capabilities are quite limited. In particular I searched for ways to use the WebView from JavaFX 2. Given that recent NetBeans versions already uses this for the embedded web browser it seemed liked the best option. However I encountered some problems so I created this issue to document them.

  1. The HtmlBrowser class can be used to embed a browser into any Swing component. However I had to select the right factory myself by enumerating the available factories and checking the class name (ugh). Otherwise the HtmlBrowser would end up picking the swing based browser factory.

    Even then what you get is an embedded browser, not just an HTML renderer. This means if the user clicks on a link the browser will navigate to that link. There are no hooks to prevent this or open the clicked link in an external browser. We could try to use a PropertyChangeListener to revert the URL change (there is no VetoableChangeListener) or inject some JavaScript into the HTML document to disable navigation but I don't like either approach.

  2. The WebView can be used directly (via a JFXPanel) but this requires to get the JavaFX 2 runtime on the class path.

    1. Several tutorials for using JavaFX 2 in a NetBeans module suggest to embed the jfxrt.jar into a module. Licensing issues aside this would add almost 13 MB (for Javafx 2.2) to the NBM.
    2. NetBeans IDE seems to take a different approach for the embedded WebView based browser. However I don't know yet how they do it.
    3. Another option would be to wait for Java 8 when the JavaFX classes will be on the class path by default.

Comments are welcome.

problems with numericals in links

Plugin compiled on Netbeans 7.1

got this text:

this [TASK-123] is done and this [one] is not

  [TASK-123]: http://some.bugtracker:8443/browse/TASK-123 "task"
  [one]: http://some.bugtracker:8443/browse/TASK-125 "other"

converted to:
<p>this [TASK-{] is done and this <a href="http://some.bugtracker:84+/browse/TASK-}" title="other">one</a> is not</p>

instead of:
<p>this <a href="http://some.bugtracker:8443/browse/TASK-123" title="task">TASK-123</a> is done and this <a href="http://some.bugtracker:8443/browse/TASK-125" title="other">one</a> is not</p>

as on dingus

note: TASK-123 changed to TASK-{ but also some.bugtracker:8443 to some.bugtracker:84+

List Elements in new Lexer

I tested the latest Lexer implementation and no List Elements seemed to be tokenized at the moment.

+ Hello
- Hello
* Hello

All throw an java.lang.IllegalStateException: No token on stack.

Product Version: NetBeans IDE 7.4 (Build 201310111528)
Java: 1.7.0_17; Java HotSpot(TM) 64-Bit Server VM 23.7-b01
Runtime: Java(TM) SE Runtime Environment 1.7.0_17-b02
System: Linux version 3.10-2-amd64 running on amd64; UTF-8; de_DE (nb)

Errors after installation

Just found out about this plugin. Sounds amazing but I get the following errors. My NetBeans version: DEV 201502020002 (64 bits) (that's a development version after 8.0.2). I guess it's a conflict with another plugin but have no clue on how to go at this. Any ideas? Thanks!

I'm going to install the official 8.0.2 and try again...

java.lang.IllegalStateException
    at org.objectweb.asm.tree.ClassNode.<init>(Unknown Source)
    at org.parboiled.transform.ParserClassNode.<init>(ParserClassNode.java:41)
    at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:43)
    at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:38)
    at org.parboiled.Parboiled.createParser(Parboiled.java:54)
Caused: java.lang.RuntimeException: Error creating extended parser class: null
    at org.parboiled.Parboiled.createParser(Parboiled.java:58)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:92)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:61)
    at flow.netbeans.markdown.csl.MarkdownParser.parse(MarkdownParser.java:33)
    at org.netbeans.modules.parsing.impl.TaskProcessor.callParse(TaskProcessor.java:621)
    at org.netbeans.modules.parsing.impl.SourceCache.getResult(SourceCache.java:251)
    at org.netbeans.modules.parsing.api.ResultIterator.getParserResult(ResultIterator.java:138)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$2.run(RepositoryUpdater.java:3168)
    at org.netbeans.modules.parsing.impl.TaskProcessor.callUserTask(TaskProcessor.java:609)
    at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:153)
    at org.netbeans.modules.parsing.api.ParserManager$UserTaskAction.run(ParserManager.java:137)
    at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:204)
    at org.netbeans.modules.parsing.impl.TaskProcessor$2.call(TaskProcessor.java:201)
    at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:176)
    at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:360)
    at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:141)
    at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:88)
    at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:201)
Caused: org.netbeans.modules.parsing.spi.ParseException
    at org.netbeans.modules.parsing.impl.TaskProcessor.runUserTask(TaskProcessor.java:209)
    at org.netbeans.modules.parsing.api.ParserManager.parse(ParserManager.java:104)
[catch] at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.indexEmbedding(RepositoryUpdater.java:3140)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doIndex(RepositoryUpdater.java:2861)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.access$400(RepositoryUpdater.java:2153)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$1.run(RepositoryUpdater.java:2635)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$1.run(RepositoryUpdater.java:2633)
    at org.netbeans.modules.parsing.impl.indexing.errors.TaskCache.refreshTransaction(TaskCache.java:546)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.index(RepositoryUpdater.java:2633)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$3.call(RepositoryUpdater.java:3286)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work$3.call(RepositoryUpdater.java:3252)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$3.run(RepositoryUpdater.java:2126)
    at org.openide.util.lookup.Lookups.executeWith(Lookups.java:295)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2122)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.runInContext(RepositoryUpdater.java:2103)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater.access$1100(RepositoryUpdater.java:156)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.scanFiles(RepositoryUpdater.java:3252)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$FileListWork.getDone(RepositoryUpdater.java:3771)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Work.doTheWork(RepositoryUpdater.java:3406)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task._run(RepositoryUpdater.java:6170)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.access$4300(RepositoryUpdater.java:5817)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$3$1.run(RepositoryUpdater.java:6088)
    at org.openide.util.lookup.Lookups.executeWith(Lookups.java:295)
    at org.netbeans.modules.parsing.impl.RunWhenScanFinishedSupport.performScan(RunWhenScanFinishedSupport.java:106)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$3.call(RepositoryUpdater.java:6084)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task$3.call(RepositoryUpdater.java:6080)
    at org.netbeans.modules.masterfs.filebasedfs.utils.FileChangedManager.priorityIO(FileChangedManager.java:176)
    at org.netbeans.modules.masterfs.providers.ProvidedExtensions.priorityIO(ProvidedExtensions.java:360)
    at org.netbeans.modules.parsing.nb.DataObjectEnvFactory.runPriorityIO(DataObjectEnvFactory.java:141)
    at org.netbeans.modules.parsing.impl.Utilities.runPriorityIO(Utilities.java:88)
    at org.netbeans.modules.parsing.impl.indexing.RepositoryUpdater$Task.run(RepositoryUpdater.java:6080)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:1425)
    at org.netbeans.modules.openide.util.GlobalLookup.execute(GlobalLookup.java:59)
    at org.openide.util.lookup.Lookups.executeWith(Lookups.java:294)
    at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:2038)

java.lang.IllegalStateException
    at org.objectweb.asm.tree.ClassNode.<init>(Unknown Source)
    at org.parboiled.transform.ParserClassNode.<init>(ParserClassNode.java:41)
    at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:43)
    at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:38)
    at org.parboiled.Parboiled.createParser(Parboiled.java:54)
Caused: java.lang.RuntimeException: Error creating extended parser class: null
    at org.parboiled.Parboiled.createParser(Parboiled.java:58)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:92)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:61)
    at flow.netbeans.markdown.highlighter.MarkdownLexer.tokenizeInput(MarkdownLexer.java:73)
    at flow.netbeans.markdown.highlighter.MarkdownLexer.nextToken(MarkdownLexer.java:40)
    at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:215)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenOrEmbeddingImpl(IncTokenList.java:195)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenOrEmbedding(IncTokenList.java:190)
    at org.netbeans.lib.lexer.LexerUtilsConstants.tokenIndexLazyTokenCreation(LexerUtilsConstants.java:317)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenIndex(IncTokenList.java:172)
    at org.netbeans.api.lexer.TokenSequence.move(TokenSequence.java:680)
    at org.netbeans.modules.editor.lib2.highlighting.SyntaxHighlighting$HSImpl.<init>(SyntaxHighlighting.java:369)
    at org.netbeans.modules.editor.lib2.highlighting.SyntaxHighlighting.getHighlights(SyntaxHighlighting.java:139)
    at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$HlSequence.<init>(DirectMergeContainer.java:197)
    at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer.getHighlights(DirectMergeContainer.java:104)
    at org.netbeans.modules.editor.lib2.highlighting.HighlightsReader.<init>(HighlightsReader.java:62)
    at org.netbeans.modules.editor.lib2.view.HighlightsViewFactory.restart(HighlightsViewFactory.java:201)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder$FactoryState.init(ViewBuilder.java:1324)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder.createViews(ViewBuilder.java:724)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder.createReplaceRepaintViews(ViewBuilder.java:685)
    at org.netbeans.modules.editor.lib2.view.ViewUpdates.reinitAllViews(ViewUpdates.java:206)
    at org.netbeans.modules.editor.lib2.view.DocumentViewOp.checkViewsInited(DocumentViewOp.java:634)
    at org.netbeans.modules.editor.lib2.view.DocumentView.getPreferredSpan(DocumentView.java:251)
    at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTextUI.java:1353)
    at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:919)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
    at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1332)
    at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:791)
    at java.awt.Container.layout(Container.java:1508)
    at java.awt.Container.doLayout(Container.java:1497)
    at java.awt.Container.validateTree(Container.java:1693)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validate(Container.java:1628)
    at org.netbeans.core.windows.view.ui.DesktopImpl$LayeredLayout.layoutContainer(DesktopImpl.java:554)
    at java.awt.Container.layout(Container.java:1508)
    at java.awt.Container.doLayout(Container.java:1497)
    at java.awt.Container.validateTree(Container.java:1693)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validate(Container.java:1628)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:704)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:702)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:701)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1719)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

java.lang.IllegalStateException
    at org.objectweb.asm.tree.ClassNode.<init>(Unknown Source)
    at org.parboiled.transform.ParserClassNode.<init>(ParserClassNode.java:41)
    at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:43)
    at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:38)
    at org.parboiled.Parboiled.createParser(Parboiled.java:54)
Caused: java.lang.RuntimeException: Error creating extended parser class: null
    at org.parboiled.Parboiled.createParser(Parboiled.java:58)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:92)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:61)
    at flow.netbeans.markdown.highlighter.MarkdownLexer.tokenizeInput(MarkdownLexer.java:73)
    at flow.netbeans.markdown.highlighter.MarkdownLexer.nextToken(MarkdownLexer.java:40)
    at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:215)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenOrEmbeddingImpl(IncTokenList.java:195)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenOrEmbedding(IncTokenList.java:190)
    at org.netbeans.lib.lexer.LexerUtilsConstants.tokenIndexLazyTokenCreation(LexerUtilsConstants.java:317)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenIndex(IncTokenList.java:172)
    at org.netbeans.api.lexer.TokenSequence.move(TokenSequence.java:680)
    at org.netbeans.modules.editor.lib2.highlighting.SyntaxHighlighting$HSImpl.<init>(SyntaxHighlighting.java:369)
    at org.netbeans.modules.editor.lib2.highlighting.SyntaxHighlighting.getHighlights(SyntaxHighlighting.java:139)
    at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$HlSequence.<init>(DirectMergeContainer.java:197)
    at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer.getHighlights(DirectMergeContainer.java:104)
    at org.netbeans.modules.editor.lib2.highlighting.HighlightsReader.<init>(HighlightsReader.java:62)
    at org.netbeans.modules.editor.lib2.view.HighlightsViewFactory.restart(HighlightsViewFactory.java:201)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder$FactoryState.init(ViewBuilder.java:1324)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder.createViews(ViewBuilder.java:724)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder.createReplaceRepaintViews(ViewBuilder.java:685)
    at org.netbeans.modules.editor.lib2.view.ViewUpdates.reinitAllViews(ViewUpdates.java:206)
    at org.netbeans.modules.editor.lib2.view.DocumentViewOp.checkViewsInited(DocumentViewOp.java:634)
    at org.netbeans.modules.editor.lib2.view.DocumentView.getPreferredSpan(DocumentView.java:251)
    at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTextUI.java:1353)
    at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:919)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
    at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1332)
    at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:791)
    at java.awt.Container.layout(Container.java:1508)
    at java.awt.Container.doLayout(Container.java:1497)
    at java.awt.Container.validateTree(Container.java:1693)
    at java.awt.Container.validate(Container.java:1628)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:704)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:702)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:701)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1719)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

java.lang.IllegalStateException
    at org.objectweb.asm.tree.ClassNode.<init>(Unknown Source)
    at org.parboiled.transform.ParserClassNode.<init>(ParserClassNode.java:41)
    at org.parboiled.transform.ParserTransformer.extendParserClass(ParserTransformer.java:43)
    at org.parboiled.transform.ParserTransformer.transformParser(ParserTransformer.java:38)
    at org.parboiled.Parboiled.createParser(Parboiled.java:54)
Caused: java.lang.RuntimeException: Error creating extended parser class: null
    at org.parboiled.Parboiled.createParser(Parboiled.java:58)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:92)
    at org.pegdown.PegDownProcessor.<init>(PegDownProcessor.java:61)
    at flow.netbeans.markdown.highlighter.MarkdownLexer.tokenizeInput(MarkdownLexer.java:73)
    at flow.netbeans.markdown.highlighter.MarkdownLexer.nextToken(MarkdownLexer.java:40)
    at org.netbeans.lib.lexer.LexerInputOperation.nextToken(LexerInputOperation.java:215)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenOrEmbeddingImpl(IncTokenList.java:195)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenOrEmbedding(IncTokenList.java:190)
    at org.netbeans.lib.lexer.LexerUtilsConstants.tokenIndexLazyTokenCreation(LexerUtilsConstants.java:317)
    at org.netbeans.lib.lexer.inc.IncTokenList.tokenIndex(IncTokenList.java:172)
    at org.netbeans.api.lexer.TokenSequence.move(TokenSequence.java:680)
    at org.netbeans.modules.editor.lib2.highlighting.SyntaxHighlighting$HSImpl.<init>(SyntaxHighlighting.java:369)
    at org.netbeans.modules.editor.lib2.highlighting.SyntaxHighlighting.getHighlights(SyntaxHighlighting.java:139)
    at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer$HlSequence.<init>(DirectMergeContainer.java:197)
    at org.netbeans.modules.editor.lib2.highlighting.DirectMergeContainer.getHighlights(DirectMergeContainer.java:104)
    at org.netbeans.modules.editor.lib2.highlighting.HighlightsReader.<init>(HighlightsReader.java:62)
    at org.netbeans.modules.editor.lib2.view.HighlightsViewFactory.restart(HighlightsViewFactory.java:201)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder$FactoryState.init(ViewBuilder.java:1324)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder.createViews(ViewBuilder.java:724)
    at org.netbeans.modules.editor.lib2.view.ViewBuilder.createReplaceRepaintViews(ViewBuilder.java:685)
    at org.netbeans.modules.editor.lib2.view.ViewUpdates.reinitAllViews(ViewUpdates.java:206)
    at org.netbeans.modules.editor.lib2.view.DocumentViewOp.checkViewsInited(DocumentViewOp.java:634)
    at org.netbeans.modules.editor.lib2.view.DocumentView.getPreferredSpan(DocumentView.java:251)
    at javax.swing.plaf.basic.BasicTextUI$RootView.getPreferredSpan(BasicTextUI.java:1353)
    at javax.swing.plaf.basic.BasicTextUI.getPreferredSize(BasicTextUI.java:919)
    at javax.swing.JComponent.getPreferredSize(JComponent.java:1660)
    at javax.swing.JEditorPane.getPreferredSize(JEditorPane.java:1332)
    at javax.swing.ScrollPaneLayout.layoutContainer(ScrollPaneLayout.java:791)
    at java.awt.Container.layout(Container.java:1508)
    at java.awt.Container.doLayout(Container.java:1497)
    at java.awt.Container.validateTree(Container.java:1693)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validate(Container.java:1628)
    at org.netbeans.core.windows.view.ui.DesktopImpl$LayeredLayout.layoutContainer(DesktopImpl.java:554)
    at java.awt.Container.layout(Container.java:1508)
    at java.awt.Container.doLayout(Container.java:1497)
    at java.awt.Container.validateTree(Container.java:1693)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validateTree(Container.java:1702)
    at java.awt.Container.validate(Container.java:1628)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:704)
    at javax.swing.RepaintManager$3.run(RepaintManager.java:702)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at javax.swing.RepaintManager.validateInvalidComponents(RepaintManager.java:701)
    at javax.swing.RepaintManager$ProcessingRunnable.run(RepaintManager.java:1719)
    at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
    at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:749)
    at java.awt.EventQueue.access$500(EventQueue.java:97)
    at java.awt.EventQueue$3.run(EventQueue.java:702)
    at java.awt.EventQueue$3.run(EventQueue.java:696)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:75)
    at java.awt.EventQueue.dispatchEvent(EventQueue.java:719)
    at org.netbeans.core.TimableEventQueue.dispatchEvent(TimableEventQueue.java:159)
[catch] at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
    at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
    at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
    at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
    at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Feature Request: Add custom css to the "preview" pane

Hi,

I have a small feature request, I would like to be able to style the CSS in the "preview" pane. So perhaps I could go into the settings and add some custom css that would be applied to the preview pane (So this would be application wide).

I use markdown to document things throughout my application, and being able to style it to be more easily readable would be so useful!

Preview contains only a few

I installed the plugin in NB 8.0.2 on Win8. Some syntax highlighting works and some is parsed correctly into the preview but some other things are not.

For example:

# Header
This is some text

## Second header
Here is a link to http://www.github.com and an email address in [email protected] .

~~~strike through~~~

Some table:

| First Header  | Second Header |
| ------------- | ------------- |
| Content Cell  | Content Cell  |
| Content Cell  | Content Cell  |

    ``` css
    .blah {
        color: black;
    }
    ```

is parsed like the attachment.

I assume this has to do with the MD parser. I guess I have a very limited parser on my system. How do I set a reference to a different parser or install a new one?

Thanks!

md

Sign plugin

Installing the plugin into Netbeans 7.4 it is asked if continue, or not, with the installation because the plugin is not signed: of course a decided to continue :-)

Even if this issue clearly is not a bug consider signing the plugin please.

Better support for pre-formatted data in the preview; hard to use

In my README.md file, I have this:

"```
deployer.username
deployer.password
deployer.release.url
deployer.snapshot.url
download.url
```"

and in preview it looks like a single line such as:
deployer.username deployer.password deployer.release.url deployer.snapshot.url download.url

I also have odd results with Java files and "```". I even see the tick marks in the preview.

I think this would be a higher priority for use than code completion in other issues I saw.

Use showURLExternal

Hi,

fd02649
I think that plugin should use showURL because User can select the browser on Tools > Option > General > Web Browser.
What do you think about this?

Regards.

Bump Pegdown Version

  • Bump Pegdown to 1.4.2
  • Integrate STRIKETHROUGH: Support strikethroughs as supported in Pandoc and Github.

Problem with quotes on generated img elements

markdown of form

![word word word](image.jpg)

![oneword](image.jpg)

generates html with incorrect quotes (too many in trailing position of alt attribute)

<p><img src="image.jpg" alt="word word word""/></p><p><img src="image.jpg" alt="oneword""/></p>

Split view for source and preview

I really like the feature to see the preview, but I don't want to jump to the preview and loose the focus for my source. And what happens if I check the checkbox "View Html on save" is that each time I save, it opens a new tab. What I prefer is a sync function with the opened tab.
My workaround to see the preview inside netbeans is to duplicate the file inside netbeans (only possible with the mouse) and set the view to preview of the duplicated file. This is ok but most of the time I use shortcuts for such things. So what I prefer is a shortcut to split your view (horicontal/vertical) to see the source and the preview inside netbeans.

Regards

Chris

Attach NBM to releases(tags)

Could you attach a nbm to releases(tags) if possible?
(not into project[nbm/flow-netbeans-markdown.nbm] but into releases)

It's possible with Draft a new release.

It will be convenient for NB user to attach one because some users are using specific NetBeans edition(e.g. PHP, C/C++).
They can't create a new nbm soon.

Thanks.

Occasional NullPointerException

I haven't found a way to reproduce this yet. Maybe this is just on a linux machine..

The NPE occurs when previewing a .md file.

Tested with this commit:

88aaafc

java.lang.NullPointerException
    at javafx.scene.Scene$ScenePulseListener.synchronizeSceneProperties(Scene.java:2323)
    at javafx.scene.Scene$ScenePulseListener.pulse(Scene.java:2417)
    at com.sun.javafx.tk.Toolkit$3.run(Toolkit.java:321)
    at com.sun.javafx.tk.Toolkit$3.run(Toolkit.java:319)
    at java.security.AccessController.doPrivileged(Native Method)
    at com.sun.javafx.tk.Toolkit.runPulse(Toolkit.java:319)
    at com.sun.javafx.tk.Toolkit.firePulse(Toolkit.java:348)
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:479)
    at com.sun.javafx.tk.quantum.QuantumToolkit.pulse(QuantumToolkit.java:460)
    at com.sun.javafx.tk.quantum.QuantumToolkit$13.run(QuantumToolkit.java:327)
[catch] at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95)
    at com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method)
    at com.sun.glass.ui.gtk.GtkApplication.access$200(GtkApplication.java:48)
    at com.sun.glass.ui.gtk.GtkApplication$6$1.run(GtkApplication.java:149)
    at java.lang.Thread.run(Thread.java:745)

Please add an option to change refresh time.

For me, the refreshtime of the preview (I split my view, so I can see both, code and preview at the same time) the refresh time is a bit to slow. I would like to change this, not each would like to have a faster or slower refreshtime so I think an option to set the refresh time would be very nice. For chrome there is an Markdown extension too, this has no delay time "type smth -> instant reload".

Regards

Chris

Different Colors in Editor

I use Markdown usually only in the NetBeans editor for README documents and not to generate HTML of it. For that it would be nice if the different headings would have slightly different colors. If the NetBeans editor supports underlining that could be used, too.

Please add code completion for HTML/CSS

I would like to have the same code completion for HTML and CSS (inline css) to style some stuff, which is not supported for Markdown files. Maybe an option would be nice.

Regards

Chris

How install this code?

Hi madflow,

I'd like to install and test this code, is there any doc about it?

Thanks for your work.

Markdown not appearing in new file wizard

I have installed the flow-netbeans-markdown.nbm version 2.1 plugin in Netbeans IDE 8.0.2.
I am running OS X Yosemite 10.10.2 on a Macbook pro.
After restarting Netbeans, Markdown does not appear in the new file wizard.
I presume it should appear in the "Other" category along with "HTML File" etc?
Markdown options do appear in the "Preferences/Miscellaneous" section.
Tom.

Can't get rid of code templates

In netbeans 8.0 when I remove any/all code templates in markdown section and hit Apply, removed code templates jump back in the list. This makes code templates totally unusable. I have even manually removed the CodeTemplates file in my netbeans profile but the fixed list of code templates is still there.

There is not syntax highlighting for PHP

I write:

     /**
      \* @param array
      \* @return void
      */  
     public function setService($servicesConfig)
     {
         $this->_servicesConfig = $servicesConfig;
     }

I get:

PHP /** * @param array * @return void */ public function setService($servicesConfig) { $this->_servicesConfig = $servicesConfig; }

Request : version number for plugin

Hi,

I think that you should update the plugin version when you create a new nbm.
Because... If user downloads new nbm(zip), user has to uninstall plugin and install new plugin again.

If version number for new nbm higher than installed nbm, user doesn't have to uninstall.
e.g.
new : 0.1.1 , old : 0.1.0

Regards.

Cant install on latest Netbeans 7.4

When I want to do step 2 - open the project, it doesnt get recognized as project. And instead of opening the project, just the folder opens.

It is also not possible to install the nbm file directly.

Support for Netbeans "Navigator" window

The markdown structure could be used to populate the "Navigator" window like e.g. how it's done when editing XML or HTML files. At least the different headings levels could be displayed.

Lexer artifact with lists

When I write some lists elements like this with latest code base:

+ List 1

+ List 2
+ List 3

It results in this:

bildschirmfoto vom 2014-01-28 15 52 06

I have not debugged this further and this is actually not a sane way to write this - but now we have it documented ;)

Bump Pegdown Version to 1.5

@sirthias released pegdown 1.5 https://github.com/sirthias/pegdown/blob/master/CHANGELOG

  • Upgraded to parboiled 1.1.7
  • Fixed problem with recognizing Wikilinks
  • Fixed problem in image tag HTML rendering
  • Added anchor links to headers
  • Added timeout check in label rule (#104)
  • Added new helper method to PegDownProcessor to supply list of ToHtmlSerializerPlugin's to ToHtmlSerializer.

This would solve #56 in the upstream library and add probably #49 functionality. I does not seem possible to just "drop in and replace" the new release after a quick check I did, because there are some changes in the LinkRenderer (sirthias/pegdown@23f6acc) in (Rendering.href is now final).

Project can't be opened in PHP only netbeans installation

I would like to use this plugin into my Netbeans with PHP only support, but the project is unrecognized. This is most likely because I don't have any of the Java plugins installed. Which plugin does Netbeans need to correctly open the project?

Add Remove Trailing Whitespace exception on Netbeans

Hi, probably not the responsibility of you, but still like to check:
My Netbeans is configured to Remove Trailing Whitespace, so for all languages​​.
This is causing problems when you want to add line breaks in MD.
I wonder if there is a way to configure it not to do this with the MD files.
I tried adding the exception in Options > Editor> Save On, but the MD language does not appear in the list.

Thanks!

Request: Preview Pane

First off, thank you for this plugin. It is great and speeds up my writing md files workflow. I'm going to be one of "those guys" with ideas but no idea how to implement them.

Could you move the "View Html" to a preview pane inside the IDE? Is that possible with NetBeans? The Source, History, [Preview] buttons might be a nice place.

I just found the options for the plugin. Custom CSS! Nice! For reference, this guy has some fun styles: http://jasonm23.github.io/markdown-css-themes/

Great work on the plugin. Thanks for putting the time into it.

-Seth

Black foreground on darker LAFs

Hi

It appears that the foreground remains black even though the UI uses darker look and feel. I see you are using JavaFX renderer to render HTML. Most of the swing colors in Netbeans are exposed via the UIManager so that they can be reused and customized as needed. Would you be able to expose the foreground color of the preview pane for customization via UIManager ?

This will help darker LAFs like ez-on-da-ice to play well with Markdown. FWIW, I have written and maintain ez-on-da-ice, so please let me know if there is something I can do.

Here is an example of the solution I am talking about. Please look at the OutputColors.java, specifically lines 3.217 - 3.248.

http://hg.netbeans.org/main-golden/rev/2f2b0132b1f6

And the related Bugzilla issue.
https://netbeans.org/bugzilla/show_bug.cgi?id=225439

screenshot-2014-07-25_10 31 21

Collaborators accounts

Hi,

@stengerh , @junichi11

I added your accounts as "Collaborators" for this repository. I do not know what you can do or not do though.

The github help says you have read-write permissions - so I assume you can now push to the repo directly. Maybe other things work now aswell? (Like creating Issue labels or merge pull requests via the web form).

I would suggest to keep up the clone/patch/create pull request/merge procedure on almost all changes - so we can have a quick review.

When it comes to fixing smaller bugs, Readme changes or other smaller tasks - I would encourage you to merge into master (or upcoming other branches respectively) as you like.

If you do not want to be listed as collaborator: please let me know!

Miscellaneous option "Save in same folder" does not save

I am using netbeans version 7.4 (spec below), When I check the option in the settings (Options > Miscellaneous > Markdown > Miscellaneous > "Save in same folder as markdown file"), It works for that session, but when I restart netbeans, the option reverts back to "unchecked", The "View HTML on save" option works fine and persists between sessions, but the "save in same folder" only works for that session, and then reverts to unchecked when netbeans is restarted.

Is this just an issue with my version of netbeans or is this a genuine bug? (Can it be reproduced by others)

// Spec from `About Netbeans`
Product Version: NetBeans IDE 7.4 (Build 201310111528)
Updates: NetBeans IDE is updated to version NetBeans 7.4 Patch 2
Java: 1.7.0_51; Java HotSpot(TM) 64-Bit Server VM 24.51-b03
Runtime: Java(TM) SE Runtime Environment 1.7.0_51-b13
System: Mac OS X version 10.9.1 running on x86_64; UTF-8; en_US (nb)

Colors of MD

Hey, thank you so much for MD support. I do have a question about colors of the .md files. My colors in the .md file look ugly, and I have no idea where to change the blue color in the .md file. I have gone through the fonts and colors editor and I don't see anything blue. Check out the image to see what I mean:
mdColors

Is the blue color set inside the NBM?

On save, auto generate html if "save in same folder"

Currently, it would be great to edit a file in netbeans, save it, and go to your browser to refresh a tab (which links to the html), currently, every time you click preview (and have view html on save checked), it opens a new tab in the browser with the preview, this is really annoying (as you have like 10 open tabs after writing just 2 lines).

So have a feature that on save, it will generate the html in the same folder as the markdown file with the same name (with .html extension of course)

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.