Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Digix666 Builder Journey #84

Open
DIGIX666 opened this issue Sep 4, 2024 · 18 comments
Open

Digix666 Builder Journey #84

DIGIX666 opened this issue Sep 4, 2024 · 18 comments
Assignees

Comments

@DIGIX666
Copy link

DIGIX666 commented Sep 4, 2024

Hi gnomes
My name is Théo and I live in France. I’m excited to start my individual grant, and in this issue, I’ll keep track of all the tasks I’ll be working on ;)

To start, I began working on the -race flag issue, which I didn’t think would take so much time because there are quite a few files conflicting over shared values, but I think I’m on the right track to update my PR 🚀

@DIGIX666
Copy link
Author

I am currently correcting the test errors on the bytes_test.gno, L542 and sort_test.gno, L656 files but I don't understand if // XXX remove testenv means that it is no longer used or if it should be replaced because testenv doesn't exist in gno and I wanted to replace it with os.Getenv but it doesn't exist on gno either because I wanted to use an export RACE=true in the CI test-with-race

@DIGIX666
Copy link
Author

Over the last two days I've been able to make some changes to the UUID package following the review of @thehowl and @moul . You can find the use of time.Now() and also a better approach with p/demo/entropy . This PR is pending

@DIGIX666
Copy link
Author

Currently I've just updated my PR -race and asked if anyone could look at my changes and guide me through finishing it.

I also presented my plan to make the Gno plugin on IntelliJ IDE

@DIGIX666
Copy link
Author

Currently IntelliJ GNO has its template and ba configuration created and I'm continuing to add files for the services

@DIGIX666
Copy link
Author

DIGIX666 commented Oct 9, 2024

  • Fixed my bugs so that the plugin recognizes .gno files, as I had version errors that I hadn't resolved at first. Actually it's good for that
image
  • I made an comment on my PR because I do not understand this error

What will I focus now

  • Implement (repo):
    • Syntax highlighting for .gno files
    • Code completion for Gno keywords
    • Code formatting for Gno files
    • Error highlighting and code analysis
    • Navigation support

@DIGIX666
Copy link
Author

DIGIX666 commented Oct 17, 2024

A little news to let you know that the guys @gnolang/24-zone01-1 from and I have put together a proposal for a gno workshop at a tech event in Rouen.
Our proposal is currently being reviewed, and we'll let you know when we hear back 🚀

image

Feedback for the proposal Workshop


Also I corrective my CI for memeland

@DIGIX666
Copy link
Author

Last week, I continued implementing the gno plugin for IntelliJ using the go-lang-idea-plugin repository as a reference. Currently, the setup is on the right track :)
And for this week I continue to work on this
I'm available for any discussion or feedback ✌🏼

@DIGIX666
Copy link
Author

DIGIX666 commented Oct 27, 2024

For the renewal of my grant, here are the 3 objectives I would like to propose to receive feedback and determine which one would be the most relevant for the gno.land ecosystem (this would be for part-time work since I still have school until June 2025) :

O1: Create an educational platform called Gnopool with @mous1985 , @kazai777 and @MalekLahbib .

KR1: Create a comprehensive set of exercises covering all essential topics of gno.land, from basic concepts to advanced use cases, ensuring a gradual and thorough understanding.

KR2: Develop the interactive platform with a user-friendly interface, allowing both beginners and advanced users to explore and learn gno through a series of exercises.

KR3: Develop a ranking system


O2: Develop a dApp to facilitate connections between people looking for developers for a task or project, with @mous1985 and @kazai777

KR1: Implement the skill validation process using a DAO, allowing developers to submit and verify their skills. This includes the integration of skill validation mechanisms and ensuring that verified developers can validate others.

KR2: Develop a bidding system for developers, enabling them to propose their rates and timelines for project tasks. This should include a feature that hides specific details (like proposed amounts) from other users to maintain transparency.

KR3: Create and integrate the smart contract that will manage the automatic assignment of developers to projects and handle the release of funds upon task validation.

KR4: Build the developer dashboard, which displays validated skills, ongoing tasks, profile stats, and a tailored list of projects matching the developer’s expertise.


O3: Continue the implementation of the Gno plugin for IntelliJ.

KR1: Complete the project structure

KR2: Adjust Gno-specific actions

@DIGIX666
Copy link
Author

Yesterday I was searching on https://docs.gno.land/ using the search bar but I got an invalid key error. A issue was opened but today I saw that the problem was no longer present. A PR was made

@DIGIX666
Copy link
Author

DIGIX666 commented Dec 11, 2024

UPDATED of my OKR's

O1 -> Continue the implementation of the Gno plugin for IntelliJ:

  • K1: Deploy the V.0 (beta version) based on go-lang-plugin-org
  • K2: Adaptation of the code according to the recommendations of the intelliJ team and refactoring of V.0 files that are useful for gno :
    • GnoTypes.java
    • GnoFile.java
    • GnoPackagesIndex.java
    • GnoAnnotator.java
    • GnoColors.java
    • GnoHighlightingAnnotator.java
    • GnoSyntaxHighlighter.java
    • _GnoLexer.java
  • K3: Deploy V.1

O2 -> Develop DApp with @mous1985 and @kazai777 :

O3 -> Continue contributing to gnolang repo:

  • KR1: Focus to contribute to issues with label help wanted and good first issues

FOCUS on vscode-gno and intellij-gno

@DIGIX666
Copy link
Author

DIGIX666 commented Jan 5, 2025

Update IntelliJ-gno

As this project turned out to be larger than expected, I wanted to save time on plugin structure and configuration by relying on the open-source go-lang-plugin-org extension. In theory, this approach worked, as only a few adjustments were needed to adapt the plugin to gno, and a V.0 could have been feasible. However, it turned out not to be a good idea, as the plugin is too outdated, with many old dependencies and configurations that are now obsolete.

I'm a bit disappointed to have taken the wrong path, but it did teach me how a language plugin works.

Now, V.1 is under construction in the dev/V.1 branch, based on IntelliJ Community, so it will be available to everyone as soon as it's deployed. Initially, it was only designed for IntelliJ Ultimate.

What has been done:
✅ Detection of .gno files
✅ Syntax highlighting

I'll try to post at least twice a week on my progress (challenges and successes).

Feel free to join the discussion and/or share your tips! :)

@DIGIX666
Copy link
Author

DIGIX666 commented Jan 15, 2025

IntelliJ-gno

  • Language and File Type
  • Grammar and Parser
  • Lexer and Parser Definition
  • Syntax Highlighter
  • PSI Helpers and Utilities
  • Annotator
  • Completion
  • Reference
  • Formatter

@DIGIX666
Copy link
Author

DIGIX666 commented Jan 22, 2025

Update week 22/01/25

DONE :

TO DO :

  • [ Gno.bnf ] - Fix syntax bugs
    Example of syntax where I have a problem :
func NewDatatsource() Datasource {
      return Datasource{exhibition}
} // error

type Datatsource struct { // error on word type
       exhibition  *Exhibition
}

Blocker

  • I don't understand or what I forget in my [ Gno.bnf ] for detected correctly the closing of a block } followed by a \n
    Because this error is present in every

I think that my error must surely come from my management of the comments and the return to line

  • I find that the intelliJ LSP doc doesn't explain how to configure it all the way.

@DIGIX666
Copy link
Author

DIGIX666 commented Feb 12, 2025

Update week 03/02/25 - 10/05/25

Done

  • Syntax Highlighting has been implemented with default colors, which can be customized by the user if needed
  • Gnopls installation is handled if the user does not have the binary
  • The plugin is usable on the GoLand IDE

In Progress

See the project bord

@DIGIX666
Copy link
Author

DIGIX666 commented Feb 23, 2025

Update week 17/02/25

DONE

  • The V.0.0.1 is done and usable link

In Progess

  • Create a configuration for run the gno test files and have a run icon in front the test functions
    link

@DIGIX666
Copy link
Author

DIGIX666 commented Feb 26, 2025

Update 19/02/25 to 26/02/25

In Progess

Run Configuration -> Gno test files (more details in the PR)
gnoverse/intellij-gno#13

@DIGIX666
Copy link
Author

DIGIX666 commented Mar 5, 2025

Update 26/02/25 to 05/03/25

For my update, I pushed a small modification on the PR accesscontrol/timelock following Morgan’s review, which involved making changes to the imports related to std.

On IntelliJ: the global test run is still configured, but I have a bug when trying to run all test files from the subfolders of examples. It crashes, but if I provide the path with a specific test file, it works. So I’m currently fixing the bug to ensure it runs the subfolders and not just individual files.

Regarding the ability to have the run logo appear in front of test functions directly, I just found a solution in IntelliJ’s documentation. I need to add test function detection in my grammar function and then implement a linter.

So right now, I’m focused on finishing that

@DIGIX666
Copy link
Author

🗓️​ Update 07/03/25 to 12/03/25


👍​ DONE :

I tried my modifications on Ubuntu and it works. Before merge in main I am waiting for feedback if the modification works well for other Linux and Windows users

  • The v0.1.0 tag is completed with the following features :

  • Syntax Highlighting - I should be able to have a clear visual distinction of keywords, types, strings, comments and other tokens. This translates to configurable editor themes

  • Auto-completion (code completion) / IntelliSense - I should have context-aware suggestions for language keywords, functions, variables and imports. Support for basic completion (language keywords) as well as dev-defined symbols (types). Support for gno stdlibs mandatory.

  • Code navigation - Go to definition for symbols; Find usages for locating occurrences; Outline /
    Symbol explorer (not sure what the name is) to display a tree of the project structure.

  • Hover tooltips + docs - on-hover popups that show type information, documentation comments and other details. Bonus: integration with gnodoc.
    Refactoring support - automated renaming of symbols, safe delete etc.

  • Diagnostics / error handling - real-time linting to catch syntax errors, type mismatches and best practice validations. Quick fix suggestions to resolve common issues.

  • Code formatting / style enforcement - automatic code formatter (gno fmt). Format on save enabled.

  • LSP support - Full integration of gnopls (this is required for 90% of features I've listed).

🚀​​ INPROGRESS :

I'm stuck on the TestXXX function test detection. Because if I say that when in my gno.bnf file the function tests are detected if they have a prefix with Test , this is not taken into account during the automatic generation of the psi and parser files. So the idea I have is to make a detection condition in the GnoParser file directly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: No status
Development

No branches or pull requests

6 participants