Browse Source

New post

master
Nicolas Petton 1 year ago
parent
commit
3bc6e401d3
No known key found for this signature in database GPG Key ID: E8BCD7866AFCF978
4 changed files with 261 additions and 88 deletions
  1. +32
    -0
      _posts/2018-11-28-indium-20-released.markdown
  2. +190
    -0
      _site/emacs/javascript/indium/2018/11/28/indium-20-released.html
  3. +27
    -88
      _site/feed.xml
  4. +12
    -0
      _site/index.html

+ 32
- 0
_posts/2018-11-28-indium-20-released.markdown View File

@@ -0,0 +1,32 @@
---
layout: post
title: "Indium 2.0 is out! 🎉"
date: 2018-11-28 15:20:00 +0200
author: Nicolas Petton
categories: emacs javascript indium
description: "Indium v2.0.0 is out!"
---

A while ago I detailed what was new with the upcoming major release of Indium.
The wait is now over, Indium 2.0.0 is finally out, and you can install it from
[MELPA](https://melpa.org).

Indium is a JavaScript development environment for
[Emacs](https://gnu.org/s/emacs). It connects to a runtime (Browser or Node),
and provides a REPL, inspector, live evaluation, and of course a stepping source
debugger.

Indium now features much better project configuration with sourcemap support for
most, if not all JavaScript projects, including React, VueJS, Meteor, Angular,
and basically any project that uses Webpack or other bundlers that produce
sourcemaps.

The new Indium is based on a client/server architecture, and requires the
installation of the indium server like the following:

npm install -g indium

![Indium debugger in action](https://raw.githubusercontent.com/NicolasPetton/Indium/master/screenshots/debugger.gif)

As always, if you encounter issues, please report bug reports
[here](https://github.com/nicolaspetton/indium/issues).

+ 190
- 0
_site/emacs/javascript/indium/2018/11/28/indium-20-released.html View File

@@ -0,0 +1,190 @@
<!DOCTYPE html>
<html lang="en">

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">

<title>Indium 2.0 is out! 🎉</title>
<meta name="description" content="A while ago I detailed what was new with the upcoming major release of Indium. The wait is now over, Indium 2.0.0 is finally out, and you can install it from...">

<link rel="shortcut icon" type="image/png" href="/favicon.png"/>
<link href="https://fonts.googleapis.com/css?family=Fira+Mono|Gentium+Book+Basic|Lato" rel="stylesheet">
<link rel="stylesheet" href="/assets/main.css">
<link rel="stylesheet" href="/css/cafe.css">
<link rel="canonical" href="https://emacs.cafe/emacs/javascript/indium/2018/11/28/indium-20-released.html">
<link rel="alternate" type="application/rss+xml" title="Emacs café" href="/feed.xml">
</head>


<body>

<header class="site-header" role="banner">

<div class="wrapper">
<a class="site-title" href="/"><img src="/img/emacscafe.png"/>Emacs café</a>
<nav class="site-nav">
<input type="checkbox" id="nav-trigger" class="nav-trigger" />
<label for="nav-trigger">
<span class="menu-icon">
<svg viewBox="0 0 18 15" width="18px" height="15px">
<path fill="#424242" d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.031C17.335,0,18,0.665,18,1.484L18,1.484z"/>
<path fill="#424242" d="M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0c0-0.82,0.665-1.484,1.484-1.484 h15.031C17.335,6.031,18,6.696,18,7.516L18,7.516z"/>
<path fill="#424242" d="M18,13.516C18,14.335,17.335,15,16.516,15H1.484C0.665,15,0,14.335,0,13.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.031C17.335,12.031,18,12.696,18,13.516L18,13.516z"/>
</svg>
</span>
</label>

<div class="trigger">
<a class="page-link" href="/about/">About Emacs café</a>
</div>
</nav>
</div>
</header>


<main class="page-content" aria-label="Content">
<div class="wrapper">
<article class="post" itemscope itemtype="http://schema.org/BlogPosting">

<header class="post-header">
<h1 class="post-title" itemprop="name headline">Indium 2.0 is out! 🎉</h1>
<p class="post-meta">
<time datetime="2018-11-28T14:20:00+01:00" itemprop="datePublished">
Nov 28, 2018
</time>
• <span itemprop="author" itemscope itemtype="http://schema.org/Person"><span itemprop="name">Nicolas Petton</span></span>
</p>
</header>

<div class="post-content" itemprop="articleBody">
<p>A while ago I detailed what was new with the upcoming major release of Indium.
The wait is now over, Indium 2.0.0 is finally out, and you can install it from
<a href="https://melpa.org">MELPA</a>.</p>

<p>Indium is a JavaScript development environment for
<a href="https://gnu.org/s/emacs">Emacs</a>. It connects to a runtime (Browser or Node),
and provides a REPL, inspector, live evaluation, and of course a stepping source
debugger.</p>

<p>Indium now features much better project configuration with sourcemap support for
most, if not all JavaScript projects, including React, VueJS, Meteor, Angular,
and basically any project that uses Webpack or other bundlers that produce
sourcemaps.</p>

<p>The new Indium is based on a client/server architecture, and requires the
installation of the indium server like the following:</p>

<div class="highlighter-rouge"><pre class="highlight"><code>npm install -g indium
</code></pre>
</div>

<p><img src="https://raw.githubusercontent.com/NicolasPetton/Indium/master/screenshots/debugger.gif" alt="Indium debugger in action" /></p>

<p>As always, if you encounter issues, please report bug reports
<a href="https://github.com/nicolaspetton/indium/issues">here</a>.</p>

</div>


<div id="disqus_thread"></div>
<script>
/* * * CONFIGURATION VARIABLES: EDIT BEFORE PASTING INTO YOUR WEBPAGE * * */
var disqus_shortname = 'emacs-cafe';

/* * * DON'T EDIT BELOW THIS LINE * * */
(function() {
var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
dsq.src = '//' + disqus_shortname + '.disqus.com/embed.js';
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
</script>
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript" rel="nofollow">comments powered by Disqus.</a></noscript>


</article>

</div>
</main>

<footer class="site-footer">

<div class="wrapper">

<h2 class="footer-heading">Emacs café</h2>

<div class="footer-col-wrapper">
<div class="footer-col footer-col-1">
<ul class="contact-list">
<li>
Emacs café
</li>
<li><a href="mailto:nicolas@petton.fr">nicolas@petton.fr</a></li>
</ul>
</div>

<div class="footer-col footer-col-2">
<ul class="social-media-list">
<li>
<a href="https://github.com/NicolasPetton"><span class="icon icon--github"><svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" d="M7.999,0.431c-4.285,0-7.76,3.474-7.76,7.761 c0,3.428,2.223,6.337,5.307,7.363c0.388,0.071,0.53-0.168,0.53-0.374c0-0.184-0.007-0.672-0.01-1.32 c-2.159,0.469-2.614-1.04-2.614-1.04c-0.353-0.896-0.862-1.135-0.862-1.135c-0.705-0.481,0.053-0.472,0.053-0.472 c0.779,0.055,1.189,0.8,1.189,0.8c0.692,1.186,1.816,0.843,2.258,0.645c0.071-0.502,0.271-0.843,0.493-1.037 C4.86,11.425,3.049,10.76,3.049,7.786c0-0.847,0.302-1.54,0.799-2.082C3.768,5.507,3.501,4.718,3.924,3.65 c0,0,0.652-0.209,2.134,0.796C6.677,4.273,7.34,4.187,8,4.184c0.659,0.003,1.323,0.089,1.943,0.261 c1.482-1.004,2.132-0.796,2.132-0.796c0.423,1.068,0.157,1.857,0.077,2.054c0.497,0.542,0.798,1.235,0.798,2.082 c0,2.981-1.814,3.637-3.543,3.829c0.279,0.24,0.527,0.713,0.527,1.437c0,1.037-0.01,1.874-0.01,2.129 c0,0.208,0.14,0.449,0.534,0.373c3.081-1.028,5.302-3.935,5.302-7.362C15.76,3.906,12.285,0.431,7.999,0.431z"/></svg>
</span><span class="username">NicolasPetton</span></a>

</li>

<li>
<a href="https://twitter.com/NicolasPetton"><span class="icon icon--twitter"><svg viewBox="0 0 16 16" width="16px" height="16px"><path fill="#828282" d="M15.969,3.058c-0.586,0.26-1.217,0.436-1.878,0.515c0.675-0.405,1.194-1.045,1.438-1.809c-0.632,0.375-1.332,0.647-2.076,0.793c-0.596-0.636-1.446-1.033-2.387-1.033c-1.806,0-3.27,1.464-3.27,3.27 c0,0.256,0.029,0.506,0.085,0.745C5.163,5.404,2.753,4.102,1.14,2.124C0.859,2.607,0.698,3.168,0.698,3.767 c0,1.134,0.577,2.135,1.455,2.722C1.616,6.472,1.112,6.325,0.671,6.08c0,0.014,0,0.027,0,0.041c0,1.584,1.127,2.906,2.623,3.206 C3.02,9.402,2.731,9.442,2.433,9.442c-0.211,0-0.416-0.021-0.615-0.059c0.416,1.299,1.624,2.245,3.055,2.271 c-1.119,0.877-2.529,1.4-4.061,1.4c-0.264,0-0.524-0.015-0.78-0.046c1.447,0.928,3.166,1.469,5.013,1.469 c6.015,0,9.304-4.983,9.304-9.304c0-0.142-0.003-0.283-0.009-0.423C14.976,4.29,15.531,3.714,15.969,3.058z"/></svg>
</span><span class="username">NicolasPetton</span></a>

</li>
</ul>
</div>

<div class="footer-col footer-col-3">
<p>A blog about Emacs, mostly focused on JavaScript development, by Nicolas Petton.
</p>
</div>
</div>

</div>

</footer>


</body>

</html>

+ 27
- 88
_site/feed.xml View File

@@ -1,5 +1,29 @@
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.5.1">Jekyll</generator><link href="https://emacs.cafe/feed.xml" rel="self" type="application/atom+xml" /><link href="https://emacs.cafe/" rel="alternate" type="text/html" /><updated>2018-08-14T18:35:23+02:00</updated><id>https://emacs.cafe/</id><title type="html">Emacs café</title><subtitle>A blog about Emacs, mostly focused on JavaScript development, by Nicolas Petton.
</subtitle><entry><title type="html">The new Indium</title><link href="https://emacs.cafe/emacs/javascript/indium/2018/08/14/indium.html" rel="alternate" type="text/html" title="The new Indium" /><published>2018-08-14T12:00:00+02:00</published><updated>2018-08-14T12:00:00+02:00</updated><id>https://emacs.cafe/emacs/javascript/indium/2018/08/14/indium</id><content type="html" xml:base="https://emacs.cafe/emacs/javascript/indium/2018/08/14/indium.html">&lt;p&gt;Now that &lt;a href=&quot;https://indium.readthedocs.io/en/latest/&quot;&gt;Indium&lt;/a&gt; 2.0 is around the
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.5.1">Jekyll</generator><link href="https://emacs.cafe/feed.xml" rel="self" type="application/atom+xml" /><link href="https://emacs.cafe/" rel="alternate" type="text/html" /><updated>2018-11-28T15:27:55+01:00</updated><id>https://emacs.cafe/</id><title type="html">Emacs café</title><subtitle>A blog about Emacs, mostly focused on JavaScript development, by Nicolas Petton.
</subtitle><entry><title type="html">Indium 2.0 is out! 🎉</title><link href="https://emacs.cafe/emacs/javascript/indium/2018/11/28/indium-20-released.html" rel="alternate" type="text/html" title="Indium 2.0 is out! 🎉" /><published>2018-11-28T14:20:00+01:00</published><updated>2018-11-28T14:20:00+01:00</updated><id>https://emacs.cafe/emacs/javascript/indium/2018/11/28/indium-20-released</id><content type="html" xml:base="https://emacs.cafe/emacs/javascript/indium/2018/11/28/indium-20-released.html">&lt;p&gt;A while ago I detailed what was new with the upcoming major release of Indium.
The wait is now over, Indium 2.0.0 is finally out, and you can install it from
&lt;a href=&quot;https://melpa.org&quot;&gt;MELPA&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Indium is a JavaScript development environment for
&lt;a href=&quot;https://gnu.org/s/emacs&quot;&gt;Emacs&lt;/a&gt;. It connects to a runtime (Browser or Node),
and provides a REPL, inspector, live evaluation, and of course a stepping source
debugger.&lt;/p&gt;

&lt;p&gt;Indium now features much better project configuration with sourcemap support for
most, if not all JavaScript projects, including React, VueJS, Meteor, Angular,
and basically any project that uses Webpack or other bundlers that produce
sourcemaps.&lt;/p&gt;

&lt;p&gt;The new Indium is based on a client/server architecture, and requires the
installation of the indium server like the following:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;npm install -g indium
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;&lt;img src=&quot;https://raw.githubusercontent.com/NicolasPetton/Indium/master/screenshots/debugger.gif&quot; alt=&quot;Indium debugger in action&quot; /&gt;&lt;/p&gt;

&lt;p&gt;As always, if you encounter issues, please report bug reports
&lt;a href=&quot;https://github.com/nicolaspetton/indium/issues&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;</content><author><name>Nicolas Petton</name></author><summary type="html">A while ago I detailed what was new with the upcoming major release of Indium. The wait is now over, Indium 2.0.0 is finally out, and you can install it from MELPA.</summary></entry><entry><title type="html">The new Indium</title><link href="https://emacs.cafe/emacs/javascript/indium/2018/08/14/indium.html" rel="alternate" type="text/html" title="The new Indium" /><published>2018-08-14T12:00:00+02:00</published><updated>2018-08-14T12:00:00+02:00</updated><id>https://emacs.cafe/emacs/javascript/indium/2018/08/14/indium</id><content type="html" xml:base="https://emacs.cafe/emacs/javascript/indium/2018/08/14/indium.html">&lt;p&gt;Now that &lt;a href=&quot;https://indium.readthedocs.io/en/latest/&quot;&gt;Indium&lt;/a&gt; 2.0 is around the
corner, it’s about time to write this post!&lt;/p&gt;

&lt;p&gt;You can see this article as the third part of my series of articles describing
@@ -1256,89 +1280,4 @@ it.&lt;/p&gt;

&lt;p&gt;If you find this feature useful, you can grab it from
my
&lt;a href=&quot;https://gitlab.petton.fr/nico/emacs.d/blob/master/local-packages/js2-unused.el&quot;&gt;emacs.d&lt;/a&gt;.&lt;/p&gt;</content><author><name>Nicolas Petton</name></author><summary type="html">The real power of Emacs lies in its extensibility. To be able to quickly hack some Elisp together to fix a specific problem right in your development environment is something quite unique to Emacs, and it makes it stand apart from other text editors.</summary></entry><entry><title type="html">Setting up Emacs for JavaScript (part #2)</title><link href="https://emacs.cafe/emacs/javascript/setup/2017/05/09/emacs-setup-javascript-2.html" rel="alternate" type="text/html" title="Setting up Emacs for JavaScript (part #2)" /><published>2017-05-09T17:00:00+02:00</published><updated>2017-05-09T17:00:00+02:00</updated><id>https://emacs.cafe/emacs/javascript/setup/2017/05/09/emacs-setup-javascript-2</id><content type="html" xml:base="https://emacs.cafe/emacs/javascript/setup/2017/05/09/emacs-setup-javascript-2.html">&lt;p&gt;This is the second part of my series of articles describing how to make Emacs a
great JavaScript development environment. This time we’ll focus on getting good
auto-completion with type inference.&lt;/p&gt;

&lt;p&gt;If you haven’t read it yet, you should jump to
the &lt;a href=&quot;/emacs/javascript/setup/2017/04/23/emacs-setup-javascript.html&quot;&gt;first post&lt;/a&gt;
first to get things started.&lt;/p&gt;

&lt;h2 id=&quot;setting-up-tern--company-mode-for-auto-completion&quot;&gt;Setting up Tern &amp;amp; company-mode for auto-completion&lt;/h2&gt;

&lt;p&gt;&lt;a href=&quot;https://ternjs.net&quot;&gt;Tern&lt;/a&gt; is a great tool once setup correctly. It parses
JavaScript files in a project and does type inference to provide meaningful
completion (with type hints) and support for cross-references.&lt;/p&gt;

&lt;p&gt;Unfortunately, cross-references with tern never reliably worked for me, that’s
why I have always been
using &lt;a href=&quot;https://github.com/nicolaspetton/xref-js2&quot;&gt;xref-js2&lt;/a&gt; instead for that
(see &lt;a href=&quot;/emacs/javascript/setup/2017/04/23/emacs-setup-javascript.html&quot;&gt;part #1&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;For auto-completion, we’ll be using company-mode with tern. Let’s go ahead and
install tern:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;$ sudo npm install -g tern
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Now let’s install the Emacs packages:&lt;/p&gt;

&lt;div class=&quot;highlighter-rouge&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;M-x package-install RET company-tern RET
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;The Emacs configuration is straight-forward, we simply enable company-mode with
the tern backend for JavaScript buffers:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-elisp&quot; data-lang=&quot;elisp&quot;&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;'company&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;'company-tern&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;add-to-list&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;'company-backends&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;'company-tern&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;add-hook&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;'js2-mode-hook&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;lambda&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;tern-mode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;company-mode&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)))&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;;; Disable completion keybindings, as we use xref-js2 instead&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;define-key&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;tern-mode-keymap&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;kbd&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;M-.&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;define-key&lt;/span&gt; &lt;span class=&quot;nv&quot;&gt;tern-mode-keymap&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nv&quot;&gt;kbd&lt;/span&gt; &lt;span class=&quot;s&quot;&gt;&quot;M-,&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;nil&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Now, depending on your JavaScript project, you might want to setup tern to work
with your project structure. If completion doesn’t work out of the box using
tern defaults you will have to set it up using a &lt;code class=&quot;highlighter-rouge&quot;&gt;.tern-project&lt;/code&gt; placed in the
root folder containing your JavaScript files.&lt;/p&gt;

&lt;p&gt;Here’s an example setup for a project that uses &lt;code class=&quot;highlighter-rouge&quot;&gt;requirejs&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;jQuery&lt;/code&gt;,
ignoring files from the &lt;code class=&quot;highlighter-rouge&quot;&gt;bower_components&lt;/code&gt; directory:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-json&quot; data-lang=&quot;json&quot;&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;libs&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;jquery&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;loadEagerly&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;./**/*.js&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;dontLoad&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;./bower_components/&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;plugins&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;requirejs&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;p&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;nt&quot;&gt;&quot;baseURL&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;w&quot;&gt; &lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;./&quot;&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;w&quot;&gt;
&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Once setup, tern offers superb completion. Together with company-mode, you get
great context-based completion with type inference.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/tern-company-mode.png&quot; alt=&quot;Ternjs&quot; /&gt;&lt;/p&gt;

&lt;p&gt;When completing a function, you can hit &lt;code class=&quot;highlighter-rouge&quot;&gt;&amp;lt;F1&amp;gt;&lt;/code&gt; to get its documentation:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/img/tern-documentation.png&quot; alt=&quot;Ternjs documentation&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;until-next-time&quot;&gt;Until next time&lt;/h2&gt;

&lt;p&gt;In the next articles I’ll cover linting with Flycheck, &lt;code class=&quot;highlighter-rouge&quot;&gt;gulp&lt;/code&gt; and &lt;code class=&quot;highlighter-rouge&quot;&gt;grunt&lt;/code&gt;
integration into Emacs, and of course how to setup and
use &lt;a href=&quot;https://indium.readthedocs.io&quot;&gt;Indium&lt;/a&gt;.&lt;/p&gt;</content><author><name>Nicolas Petton</name></author><summary type="html">This is the second part of my series of articles describing how to make Emacs a great JavaScript development environment. This time we’ll focus on getting good auto-completion with type inference.</summary></entry></feed>
&lt;a href=&quot;https://gitlab.petton.fr/nico/emacs.d/blob/master/local-packages/js2-unused.el&quot;&gt;emacs.d&lt;/a&gt;.&lt;/p&gt;</content><author><name>Nicolas Petton</name></author><summary type="html">The real power of Emacs lies in its extensibility. To be able to quickly hack some Elisp together to fix a specific problem right in your development environment is something quite unique to Emacs, and it makes it stand apart from other text editors.</summary></entry></feed>

+ 12
- 0
_site/index.html View File

@@ -78,6 +78,18 @@
<li>
<span class="post-meta">Nov 28, 2018</span>

<h2>
<a class="post-link" href="/emacs/javascript/indium/2018/11/28/indium-20-released.html">Indium 2.0 is out! 🎉</a>
</h2>
<div class="post-desc post-meta">Indium v2.0.0 is out!</div>
</li>
<li>
<span class="post-meta">Aug 14, 2018</span>

<h2>


Loading…
Cancel
Save