Giter Club home page Giter Club logo

concat's Introduction

Hello there 👋

header

I'm a software developer at Imagine Learning and a recent graduate of Arizona State University. I studied computer science and was an officer of the Software Developers Association. I like using code to create, and I believe in technology's ability to help us do good things. Outside of coding, I like games such as Thomas Was Alone and Cities: Skylines, occasionally taking photos, math, and outer space.

  • 🔭 I’m currently working on a transpiled concatenative language called Concat. Check out my Mailspring plugin, Todoer, too.
  • 🌱 I’m currently learning programming language design & implementation (at least, what I need to know for Concat).
  • 👯 If you want to contribute to any of my projects, I encourage you to look at Concat and Todoer.
  • 🤔 I’m looking for help with Concat's type checker and exploring computational sustainability.
  • 💬 Ask me about web development, programming languages, computational sustainability, Doctor Who lore, and my favorite Snarky Puppy tracks.
  • 📫 How to reach me:
  • ⚡ Fun fact: Once upon a time, I was on an ultimate frisbee team.

My GitHub stats with stars earned, commits this year, PRs, issues, and projects contributed to this year

concat's People

Contributors

deepsource-autofix[bot] avatar jmanuel1 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

concat's Issues

Atom package: Swallow `tokenize.TokenError` for syntax highlighting purposes

Test case: [

Expected: Syntax highlighting completes (although no style is attached to [)

Actual: This error in the console:

child_process.js:304 Uncaught (in promise) Error: Command failed: C:\Users\jamai\Documents\projects\concat\env\Scripts\python.exe -m concat --tokenize
Traceback (most recent call last):
  File "c:\users\jamai\appdata\local\programs\python\python37-32\Lib\runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "c:\users\jamai\appdata\local\programs\python\python37-32\Lib\runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "C:\Users\jamai\Documents\projects\concat\env\lib\site-packages\concat-0.1.2.dev1-py3.7.egg\concat\__main__.py", line 67, in <module>
    tokens = concat.lex.tokenize(code, should_preserve_comments=True)
  File "C:\Users\jamai\Documents\projects\concat\env\lib\site-packages\concat-0.1.2.dev1-py3.7.egg\concat\lex.py", line 39, in tokenize
    token = lexer.token()
  File "C:\Users\jamai\Documents\projects\concat\env\lib\site-packages\concat-0.1.2.dev1-py3.7.egg\concat\lex.py", line 68, in token
    return next(self._concat_token_iterator, None)
  File "C:\Users\jamai\Documents\projects\concat\env\lib\site-packages\concat-0.1.2.dev1-py3.7.egg\concat\lex.py", line 79, in _tokens
    for token_ in self.tokens:
  File "C:\Users\jamai\Documents\projects\concat\env\lib\tokenize.py", line 579, in _tokenize
    raise TokenError("EOF in multi-line statement", (lnum, 0))
tokenize.TokenError: ('EOF in multi-line statement', (2, 0))

    at ChildProcess.exithandler (child_process.js:304)
    at ChildProcess.emit (events.js:223)
    at maybeClose (internal/child_process.js:1021)
    at Process.ChildProcess._handle.onexit (internal/child_process.js:283)
exithandler	@	child_process.js:304
emit	@	events.js:223
maybeClose	@	internal/child_process.js:1021
ChildProcess._handle.onexit	@	internal/child_process.js:283
Promise.then (async)		
step	@	C:\Users\jamai\Docum…antic-grammar.ts:22
(anonymous)	@	C:\Users\jamai\Docum…antic-grammar.ts:23
__awaiter	@	C:\Users\jamai\Docum…antic-grammar.ts:19
module.exports.JavaScriptSemanticGrammar.markTokensForChange	@	C:\Users\jamai\Docum…ntic-grammar.ts:234
module.exports.JavaScriptSemanticGrammar.markTokens	@	C:\Users\jamai\Docum…ntic-grammar.ts:227
(anonymous)	@	C:\Users\jamai\Docum…ntic-grammar.ts:209
simpleDispatch	@	<embedded>:11
emit	@	<embedded>:11
emitDidStopChangingEvent	@	<embedded>:11
later	@	<embedded>:14
setTimeout (async)		
(anonymous)	@	<embedded>:14
emitDidChangeTextEvent	@	<embedded>:11
undo	@	<embedded>:11
(anonymous)	@	<embedded>:11
mergeSelections	@	<embedded>:11
avoidMergingSelections	@	<embedded>:11
undo	@	<embedded>:11
textEditor.undo	@	C:\Users\jamai\.atom…gle-selection.js:81
core:undo	@	<embedded>:11
n.<computed>	@	<embedded>:11
handleCommandEvent	@	<embedded>:11
KeymapManager.dispatchCommandEvent	@	<embedded>:11
KeymapManager.handleKeyboardEvent	@	<embedded>:11
handleDocumentKeyEvent	@	<embedded>:11

In this case, the issue is the unclosed bracket.

Atom package: Black lines in minimap

I think the minimap package does not understand that we're doing syntax highlighting. In fact, the Grammar subclass doesn't return any tokens in tokenizeLine which I think explains why the lines in the minimap are black. Atom's grammar tokens are supposed to collectively cover the whole text, but our grammar tokens cover none of the text because there are no tokens.
image

Possible solutions:

  • Have a textmate grammar. Use the Concat lexer to overlay extra information on top of it.
  • Give Atom the currently known tokens when it asks for them from the grammar. We get the tokens asynchronously, so maybe what we display will be out of date.
  • Plug into the minimap package.

I'm not of fan of the second option.

Atom package: Make command to run Concat configurable

Currently, the Atom package searches for Python in a few places and then runs python -m concat. However, it cannot possibly foresee every situation in every project. Therefore, there should be a project-specific or even directory-specific way to specify which command should be used to run Concat. The current behavior can be kept as a default.

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.