Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Scala plugin for IntelliJ IDEA
Search
Pavel Fatin
July 16, 2011
Programming
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Scala plugin for IntelliJ IDEA
Scalathon 2011,
http://scalathon.org/2011/
http://vimeo.com/28692913
Pavel Fatin
July 16, 2011
More Decks by Pavel Fatin
See All by Pavel Fatin
Inside the IntelliJ Scala Plugin
pavelfatin
1
170
Design Patterns in Scala
pavelfatin
6
1.6k
Практичность Scala
pavelfatin
0
140
Новый подход к компиляции Scala в IntelliJ IDEA
pavelfatin
0
160
Scala Plugin для IntelliJ IDEA
pavelfatin
0
78
Other Decks in Programming
See All in Programming
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
1
520
源内ハンズオン概要編
hideg
0
210
不幸な GC
chencmd
0
740
Hono + Inertia + React で LP を構築した話
oukayuka
2
160
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
240
Press start. Python's next generation.
willingc
PRO
3
130
引き算の組織 ― アウトカムとAIに全振りするために辞めたこと ― / Organization by Subtraction
hirokiyamamoto14
PRO
0
300
「人を評価する AI」の設計と実装
ryoyanara
0
240
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
2
440
仕様駆動開発へのトライを機に チームに適合する手法を模索し続けている話
freee
PRO
0
620
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
550
AI Readyの正体はデータマネジメントだ メダリオン2.0の最前線
freee
PRO
0
380
Featured
See All Featured
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
390
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Product Roadmaps are Hard
iamctodd
55
12k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Believing is Seeing
oripsolob
1
200
First, design no harm
axbom
PRO
2
1.3k
Test your architecture with Archunit
thirion
2
2.4k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4.2k
Optimising Largest Contentful Paint
csswizardry
37
3.9k
Transcript
Pavel Fatin Alexander Podkhalyuzin Scalathon, 2011 Scala plugin for IntelliJ
IDEA
Thank you!
IntelliJ Scala Plugin Agenda Why do we need it
What's inside How it's made How to contribute
Do we need an IDE for Scala?
Can't we just use Notepad? Rationale
Is it always the right tool? Rationale ?
What makes us more productive? Highlighting Inspections
Code formatting Auto-completion Information look-up Refactoring Integration Rationale
What's already available?
Syntax highlighting Injected language By-name argument Implicit conversion Deprecated method
Features
Error highlighting Ordinary: Type-aware: Quick-fixes: Features
Inspections Unused symbol Variable could be value
Redundant return Syntactic sugar Method signature inspections Features
Language injection Pattern-based: Via parameter annotation: Via
value annotation: Features
Dark color schemes Features
Language-aware editor Brace balancing: Entities selection: Code
folding: Features
Formatting Features
Code completion Features
Information look-up Type info Parameter info Documentation
look-up Definition look-up Features
Type Info Features
Parameter info Features
Documentation look-up Features
Definition look-up Features
Imports management Import entity on completion Auto-import unresolved
symbol Highlight unused imports Optimize imports Paste imports Features
Refactoring Rename Introduce variable Inline variable
Extract method Introduce parameter Features
Rename Features
Introduce variable Features
Inline variable Features
Extract method Features
Introduce parameter Features
Integrations Java JUnit / Specs / ScalaTest
Maven Spring Lift SBT Features
How it's made (It's not rocket science theoretical physics)
Building the project Get the latest IDEA EAP build
Download IDEA sources Enable DevKit plugin Configure a Plugin SDK Clone Scala plugin repository Open the project in IDEA Architecture
Plugging the plugin Plugin.xml OpenAPI Architecture
Code processing Document Lexer Parser Wrapper PSI Architecture Text Tokens
AST
Processing example Literal Literal ReferenceExpression ReferenceExpression WhiteSpace WhiteSpace Architecture STRING
WS IDENTIFIER TRUE "that's" + WhiteSpace WhiteSpace Literal Literal true WS InfixExpression InfixExpression
PSI viewer Architecture
PSI foundation Architecture PsiElement textRange parent children prevSibling nextSibling add(element)
addBefore(element, anchor) addAfter(element, anchor) delete() replace(newElement)
PSI elements hierarchy Scala Architecture PsiFile ScTypeDefinition ScalaFile PsiComment ScGenerator
PsiClass PsiElement
Scala Language Specification Architecture
Scala domain elements Architecture ScClass name constructor superTypes members extendsblock
add(member, anchor) remove(member) isInheritor(psiClass)
TODO
Tasks Bug fixes Inspections Refactorings Intentions
Frameworks support Type system improvement [Your most wanted feature here] TODO
Everyone is Welcome!