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
0
150
Scala plugin for IntelliJ IDEA
Scalathon 2011,
http://scalathon.org/2011/
http://vimeo.com/28692913
Pavel Fatin
July 16, 2011
Tweet
Share
More Decks by Pavel Fatin
See All by Pavel Fatin
Inside the IntelliJ Scala Plugin
pavelfatin
1
150
Design Patterns in Scala
pavelfatin
6
1.6k
Практичность Scala
pavelfatin
0
130
Новый подход к компиляции Scala в IntelliJ IDEA
pavelfatin
0
140
Scala Plugin для IntelliJ IDEA
pavelfatin
0
62
Other Decks in Programming
See All in Programming
オープンソースソフトウェアへの解像度🔬
utam0k
17
3.2k
Ktorで簡単AIアプリケーション
tsukakei
0
110
実践Claude Code:20の失敗から学ぶAIペアプログラミング
takedatakashi
18
8.9k
Go言語はstack overflowの夢を見るか?
logica0419
0
630
AIと人間の共創開発!OSSで試行錯誤した開発スタイル
mae616
2
820
CSC509 Lecture 06
javiergs
PRO
0
270
技術的負債の正体を知って向き合う
irof
0
270
AI時代に必須!状況言語化スキル / ai-context-verbalization
minodriven
2
120
ドメイン駆動設計のエッセンス
masuda220
PRO
13
4.7k
コードとあなたと私の距離 / The Distance Between Code, You, and I
hiro_y
0
200
なんでRustの環境構築してないのにRust製のツールが動くの? / Why Do Rust-Based Tools Run Without a Rust Environment?
ssssota
14
46k
kiroとCodexで最高のSpec駆動開発を!!数時間で web3ネイティブなミニゲームを作ってみたよ!
mashharuki
0
940
Featured
See All Featured
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.1k
Writing Fast Ruby
sferik
630
62k
KATA
mclloyd
PRO
32
15k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.7k
How GitHub (no longer) Works
holman
315
140k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
31
2.7k
Raft: Consensus for Rubyists
vanstee
140
7.2k
How to Ace a Technical Interview
jacobian
280
24k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
Building Applications with DynamoDB
mza
96
6.7k
How to train your dragon (web standard)
notwaldorf
97
6.3k
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!