SlideShare a Scribd company logo
1 of 16
Download to read offline
Getting things done
with Emacs
An editor for Jedis :-)
❖ Not going to evangelize, no
comparisons; things I find
useful, nothing more
❖ “Show and Tell”
❖ My own history …
❖ What editors do you all use?
Background
Outline
❖ Dive into features
❖ Present workflows
❖ Day-to-day development, nothing more
❖ I’ll keep the “why Emacs” and “setup tips” for the end
❖ Demo stuff along with the slides
❖ Please do interrupt with questions!
Basic stuff
❖ Essential fact: Emacs is (mostly) non-modal. M-x is your
friend.
❖ helm-M-x (also, Helm is your friend)
❖ Save your keystrokes!
❖ Another example: M-x helm-swoop (just bind it to
search)
Development Tools
❖ Rtags integration
❖ M-x rtags-find-all-references-at-point
❖ M-x rtags-find-symbol
❖ (... and much more)
❖ Compilation buffer
❖ M-x compile
❖ Flycheck
❖ Get error descriptions as you type!
Development Tools (2)
❖ Helm-projectile
❖ M-x helm-projectile-find-file-dwim
❖ Searching
❖ M-x helm-swoop
❖ M-x helm-projectile-ag
❖ Imenu/Semantic
❖ Lightweight/heavyweight
❖ M-x helm-semantic-or-imenu
Development Tools (3)
❖ Splitting and moving windows
❖ Aside: “Frames” and “windows”
❖ M-x windmove-{left,right,up,down} (bind to useful keyboard shortcuts!)
❖ Formatting
❖ M-x clang-format{-region}
❖ (Why wait to run make clang-format-patch-stack!)
❖ Diffing
❖ M-x smerge-{…}
❖ (Show colorized diff in place, hotkeys for keeping “mine”/“other”/“base”)
❖ Undo-ing
❖ M-x undo …. meh … M-x undo-tree-visualize … whoa!
❖ Copy-pasting
❖ M-x helm-show-kill-ring
Misc useful stuff
❖ Multiple cursors
❖ M-x mc/mark-all-like-this
❖ Eshell
❖ Nifty! s-expressions in your shell …
❖ M-x eshell
❖ Org mode
❖ Some people think it’s really cool
❖ Spacemacs
❖ Some people think it’s a good “batteries included” version of Emacs, “Vim-friendly”
❖ OSX Key bindings
❖ They’re everywhere, once you start looking for them
❖ Try it now! (Ctrl-n, Ctrl-p, Ctrl-f, Ctrl-b, Ctrl-a, Ctrl-e, Ctrl-k, Ctrl-y)
(Ma)Git
❖ “Magit” autocorrects to “Magic”
❖ M-x magit-status
❖ The best git porcelain, ever. Ever.
Sample dev flow
❖ (tying it all together)
❖ Checkout branch / Make some changes / commit /
search-replace-make-changes / Rebase (interactive!
reorder!) / Push
Beginning with Emacs
❖ Getting it
❖ Ubuntu: …
❖ Mac: just use brew
❖ Configuration
❖ .emacs
❖ But, I recommend another level of indirection
❖ E.g. I keep a dotemacs.el inside .emacs.d, version-controlled
❖ Easy to add new packages these days (I was done on day 1 here!)
Beginning with Emacs (2)
❖ Remap keys (save your fingers!)
❖ “Ctrl”: Get rid of Caps Lock
❖ Seriously, you don’t need that
❖ “Alt”: I replace M-x with C-x C-m
❖ Add the Elpa/Melpa/Marmalade repos
❖ Tons of packages, especially in the era of Github
❖ M-x list-packages
Beginning Emacs (3)
❖ Some resources
❖ Internal: Slack channel #emacs
❖ External: Stack exchange, LMGTFY
❖ Book: Mastering Emacs
❖ So, if you were waiting to try it out, go for it!
❖ But, yeah, it can take time (months? years?)
Tl;dr:
❖ There are lots of practical optimizations possible in the
day-to-day workflow
❖ It’s good to keep trying to find different/better ways to
do something
❖ You don’t have to use Emacs (obviously) — but, make
sure you find some equivalent of each plugin/function
mentioned here.
(finally) Why Emacs?
❖ Limitless customization
❖ Custom-built for you
❖ The usual pros and cons
❖ Limitless integration
❖ (I’m not that hardcore, but …) mail client, browser, IRC client,
therapist?
❖ Future proof
❖ It’s been around for a while
❖ It will outlive everything else (except, perhaps, Vim)
Questions?

More Related Content

What's hot

Introduction to rails
Introduction to railsIntroduction to rails
Introduction to railsGo Asgard
 
Drupal + selenium
Drupal + seleniumDrupal + selenium
Drupal + seleniumhernanibf
 
A day in the office of a js developer
A day in the office   of a js developerA day in the office   of a js developer
A day in the office of a js developerKrešimir Antolić
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with GruntLadies Who Code
 
Extreme Javascript Minification
Extreme Javascript MinificationExtreme Javascript Minification
Extreme Javascript MinificationDavid Goemans
 
How to become a practical Vim user
How to become a practical Vim userHow to become a practical Vim user
How to become a practical Vim userKana Natsuno
 
Guide to the Open Source Desktop
Guide to the Open Source DesktopGuide to the Open Source Desktop
Guide to the Open Source DesktopPOSSCON
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausWomen in Technology Poland
 

What's hot (12)

Introduction to rails
Introduction to railsIntroduction to rails
Introduction to rails
 
AngularJs Crash Course
AngularJs Crash CourseAngularJs Crash Course
AngularJs Crash Course
 
Drupal + selenium
Drupal + seleniumDrupal + selenium
Drupal + selenium
 
A day in the office of a js developer
A day in the office   of a js developerA day in the office   of a js developer
A day in the office of a js developer
 
Front End Development Automation with Grunt
Front End Development Automation with GruntFront End Development Automation with Grunt
Front End Development Automation with Grunt
 
Extreme Javascript Minification
Extreme Javascript MinificationExtreme Javascript Minification
Extreme Javascript Minification
 
How to become a practical Vim user
How to become a practical Vim userHow to become a practical Vim user
How to become a practical Vim user
 
Docker
DockerDocker
Docker
 
Guide to the Open Source Desktop
Guide to the Open Source DesktopGuide to the Open Source Desktop
Guide to the Open Source Desktop
 
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan KrausHTML, CSS & Javascript Architecture (extended version) - Jan Kraus
HTML, CSS & Javascript Architecture (extended version) - Jan Kraus
 
Vim survival guide
Vim survival guideVim survival guide
Vim survival guide
 
Why Add Ons
Why Add OnsWhy Add Ons
Why Add Ons
 

Similar to Emacs talk

NYPHP March 2009 Presentation
NYPHP March 2009 PresentationNYPHP March 2009 Presentation
NYPHP March 2009 Presentationbrian_dailey
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategiesrahulbot
 
Makefile for python projects
Makefile for python projectsMakefile for python projects
Makefile for python projectsMpho Mphego
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational WorkYung-Yu Chen
 
Js deobfuscation with JStillery - bsides-roma 2018
Js deobfuscation with JStillery - bsides-roma 2018Js deobfuscation with JStillery - bsides-roma 2018
Js deobfuscation with JStillery - bsides-roma 2018Minded Security
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet
 
Emacs, a performant IDE for Perl
Emacs, a performant IDE for PerlEmacs, a performant IDE for Perl
Emacs, a performant IDE for PerlLaurent Dami
 
Ci For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or GalCi For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or GalChad Woolley
 
Bioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionBioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionProf. Wim Van Criekinge
 
Fullstack Academy - Awesome Web Dev Tips & Tricks
Fullstack Academy - Awesome Web Dev Tips & TricksFullstack Academy - Awesome Web Dev Tips & Tricks
Fullstack Academy - Awesome Web Dev Tips & TricksFrances Coronel
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using SwiftDiego Freniche Brito
 
Save time and your sanity: Increase your efficiency with Microsoft Word
Save time and your sanity: Increase your efficiency with Microsoft Word Save time and your sanity: Increase your efficiency with Microsoft Word
Save time and your sanity: Increase your efficiency with Microsoft Word Rhonda Bracey
 
keyboard accessibility
keyboard accessibilitykeyboard accessibility
keyboard accessibilityakira9515
 
Red Teaming macOS Environments with Hermes the Swift Messenger
Red Teaming macOS Environments with Hermes the Swift MessengerRed Teaming macOS Environments with Hermes the Swift Messenger
Red Teaming macOS Environments with Hermes the Swift MessengerJustin Bui
 
Open shift
Open shiftOpen shift
Open shiftmarcolof
 

Similar to Emacs talk (20)

Small Screen Development
Small Screen DevelopmentSmall Screen Development
Small Screen Development
 
NYPHP March 2009 Presentation
NYPHP March 2009 PresentationNYPHP March 2009 Presentation
NYPHP March 2009 Presentation
 
[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies[Mas 500] Software Development Strategies
[Mas 500] Software Development Strategies
 
Makefile for python projects
Makefile for python projectsMakefile for python projects
Makefile for python projects
 
Craftsmanship in Computational Work
Craftsmanship in Computational WorkCraftsmanship in Computational Work
Craftsmanship in Computational Work
 
Js deobfuscation with JStillery - bsides-roma 2018
Js deobfuscation with JStillery - bsides-roma 2018Js deobfuscation with JStillery - bsides-roma 2018
Js deobfuscation with JStillery - bsides-roma 2018
 
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
Puppet@Citygrid - Julien Rottenberg - PuppetCamp LA '12
 
Emacs tutorial
Emacs tutorialEmacs tutorial
Emacs tutorial
 
Emacs, a performant IDE for Perl
Emacs, a performant IDE for PerlEmacs, a performant IDE for Perl
Emacs, a performant IDE for Perl
 
Ci For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or GalCi For The Web 2.0 Guy Or Gal
Ci For The Web 2.0 Guy Or Gal
 
Bioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introductionBioinformatica 29-09-2011-p1-introduction
Bioinformatica 29-09-2011-p1-introduction
 
Fullstack Academy - Awesome Web Dev Tips & Tricks
Fullstack Academy - Awesome Web Dev Tips & TricksFullstack Academy - Awesome Web Dev Tips & Tricks
Fullstack Academy - Awesome Web Dev Tips & Tricks
 
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides:  Let's build macOS CLI Utilities using SwiftMobileConf 2021 Slides:  Let's build macOS CLI Utilities using Swift
MobileConf 2021 Slides: Let's build macOS CLI Utilities using Swift
 
tools
toolstools
tools
 
tools
toolstools
tools
 
Save time and your sanity: Increase your efficiency with Microsoft Word
Save time and your sanity: Increase your efficiency with Microsoft Word Save time and your sanity: Increase your efficiency with Microsoft Word
Save time and your sanity: Increase your efficiency with Microsoft Word
 
Os Wilhelm
Os WilhelmOs Wilhelm
Os Wilhelm
 
keyboard accessibility
keyboard accessibilitykeyboard accessibility
keyboard accessibility
 
Red Teaming macOS Environments with Hermes the Swift Messenger
Red Teaming macOS Environments with Hermes the Swift MessengerRed Teaming macOS Environments with Hermes the Swift Messenger
Red Teaming macOS Environments with Hermes the Swift Messenger
 
Open shift
Open shiftOpen shift
Open shift
 

Recently uploaded

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...Shane Coughlan
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisamasabamasaba
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareJim McKeeth
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastPapp Krisztián
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnAmarnathKambale
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in sowetomasabamasaba
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...masabamasaba
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrainmasabamasaba
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Bert Jan Schrijver
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfonteinmasabamasaba
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...masabamasaba
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...chiefasafspells
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburgmasabamasaba
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension AidPhilip Schwarz
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyviewmasabamasaba
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2
 

Recently uploaded (20)

OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
OpenChain - The Ramifications of ISO/IEC 5230 and ISO/IEC 18974 for Legal Pro...
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
Announcing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK SoftwareAnnouncing Codolex 2.0 from GDK Software
Announcing Codolex 2.0 from GDK Software
 
Architecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the pastArchitecture decision records - How not to get lost in the past
Architecture decision records - How not to get lost in the past
 
VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital TransformationWSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
WSO2Con2024 - WSO2's IAM Vision: Identity-Led Digital Transformation
 
%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto%in Soweto+277-882-255-28 abortion pills for sale in soweto
%in Soweto+277-882-255-28 abortion pills for sale in soweto
 
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
%+27788225528 love spells in Knoxville Psychic Readings, Attraction spells,Br...
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
Devoxx UK 2024 - Going serverless with Quarkus, GraalVM native images and AWS...
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
%+27788225528 love spells in Huntington Beach Psychic Readings, Attraction sp...
 
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
WSO2CON 2024 - WSO2's Digital Transformation Journey with Choreo: A Platforml...
 
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
Love witchcraft +27768521739 Binding love spell in Sandy Springs, GA |psychic...
 
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
%in Rustenburg+277-882-255-28 abortion pills for sale in Rustenburg
 
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
Direct Style Effect Systems -The Print[A] Example- A Comprehension AidDirect Style Effect Systems -The Print[A] Example- A Comprehension Aid
Direct Style Effect Systems - The Print[A] Example - A Comprehension Aid
 
WSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaSWSO2CON 2024 Slides - Open Source to SaaS
WSO2CON 2024 Slides - Open Source to SaaS
 
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
%in Hazyview+277-882-255-28 abortion pills for sale in Hazyview
 
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
WSO2CON 2024 - Building the API First Enterprise – Running an API Program, fr...
 
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
WSO2CON 2024 - Navigating API Complexity: REST, GraphQL, gRPC, Websocket, Web...
 

Emacs talk

  • 1. Getting things done with Emacs An editor for Jedis :-)
  • 2. ❖ Not going to evangelize, no comparisons; things I find useful, nothing more ❖ “Show and Tell” ❖ My own history … ❖ What editors do you all use? Background
  • 3. Outline ❖ Dive into features ❖ Present workflows ❖ Day-to-day development, nothing more ❖ I’ll keep the “why Emacs” and “setup tips” for the end ❖ Demo stuff along with the slides ❖ Please do interrupt with questions!
  • 4. Basic stuff ❖ Essential fact: Emacs is (mostly) non-modal. M-x is your friend. ❖ helm-M-x (also, Helm is your friend) ❖ Save your keystrokes! ❖ Another example: M-x helm-swoop (just bind it to search)
  • 5. Development Tools ❖ Rtags integration ❖ M-x rtags-find-all-references-at-point ❖ M-x rtags-find-symbol ❖ (... and much more) ❖ Compilation buffer ❖ M-x compile ❖ Flycheck ❖ Get error descriptions as you type!
  • 6. Development Tools (2) ❖ Helm-projectile ❖ M-x helm-projectile-find-file-dwim ❖ Searching ❖ M-x helm-swoop ❖ M-x helm-projectile-ag ❖ Imenu/Semantic ❖ Lightweight/heavyweight ❖ M-x helm-semantic-or-imenu
  • 7. Development Tools (3) ❖ Splitting and moving windows ❖ Aside: “Frames” and “windows” ❖ M-x windmove-{left,right,up,down} (bind to useful keyboard shortcuts!) ❖ Formatting ❖ M-x clang-format{-region} ❖ (Why wait to run make clang-format-patch-stack!) ❖ Diffing ❖ M-x smerge-{…} ❖ (Show colorized diff in place, hotkeys for keeping “mine”/“other”/“base”) ❖ Undo-ing ❖ M-x undo …. meh … M-x undo-tree-visualize … whoa! ❖ Copy-pasting ❖ M-x helm-show-kill-ring
  • 8. Misc useful stuff ❖ Multiple cursors ❖ M-x mc/mark-all-like-this ❖ Eshell ❖ Nifty! s-expressions in your shell … ❖ M-x eshell ❖ Org mode ❖ Some people think it’s really cool ❖ Spacemacs ❖ Some people think it’s a good “batteries included” version of Emacs, “Vim-friendly” ❖ OSX Key bindings ❖ They’re everywhere, once you start looking for them ❖ Try it now! (Ctrl-n, Ctrl-p, Ctrl-f, Ctrl-b, Ctrl-a, Ctrl-e, Ctrl-k, Ctrl-y)
  • 9. (Ma)Git ❖ “Magit” autocorrects to “Magic” ❖ M-x magit-status ❖ The best git porcelain, ever. Ever.
  • 10. Sample dev flow ❖ (tying it all together) ❖ Checkout branch / Make some changes / commit / search-replace-make-changes / Rebase (interactive! reorder!) / Push
  • 11. Beginning with Emacs ❖ Getting it ❖ Ubuntu: … ❖ Mac: just use brew ❖ Configuration ❖ .emacs ❖ But, I recommend another level of indirection ❖ E.g. I keep a dotemacs.el inside .emacs.d, version-controlled ❖ Easy to add new packages these days (I was done on day 1 here!)
  • 12. Beginning with Emacs (2) ❖ Remap keys (save your fingers!) ❖ “Ctrl”: Get rid of Caps Lock ❖ Seriously, you don’t need that ❖ “Alt”: I replace M-x with C-x C-m ❖ Add the Elpa/Melpa/Marmalade repos ❖ Tons of packages, especially in the era of Github ❖ M-x list-packages
  • 13. Beginning Emacs (3) ❖ Some resources ❖ Internal: Slack channel #emacs ❖ External: Stack exchange, LMGTFY ❖ Book: Mastering Emacs ❖ So, if you were waiting to try it out, go for it! ❖ But, yeah, it can take time (months? years?)
  • 14. Tl;dr: ❖ There are lots of practical optimizations possible in the day-to-day workflow ❖ It’s good to keep trying to find different/better ways to do something ❖ You don’t have to use Emacs (obviously) — but, make sure you find some equivalent of each plugin/function mentioned here.
  • 15. (finally) Why Emacs? ❖ Limitless customization ❖ Custom-built for you ❖ The usual pros and cons ❖ Limitless integration ❖ (I’m not that hardcore, but …) mail client, browser, IRC client, therapist? ❖ Future proof ❖ It’s been around for a while ❖ It will outlive everything else (except, perhaps, Vim)