We’ve only just begun1 to live
二人の人生 まだほんの始まり
今回はのほほんとnvim-navicを導入してみましょう。
A simple statusline/winbar component that uses LSP to show your current code context.
Named after the Indian satellite navigation system.
LSP を使用して現在のコードコンテキストを表示するシンプルな statusline/winbar コンポーネントです。
インドの衛星ナビゲーションシステムにちなんで名付けられました。
これもLSPを利用して動作するプラグインです。
日本で衛星の話はまだだいぶお耳が痛いですが、インドのNavIC2
はしっかり地球を飛び立った衛星です。
nvim-navicの導入は、それはもうとても恐ろしく簡単です。インド人もびっくり❗
まあ、SmiteshP さんはインドの人なんだけど😮
extensions/nvim-navic.lua
require ('nvim-navic' ).setup {
lsp = {
auto_attach = true ,
},
highlight = true ,
}
もうこれだけで飛びます。ニホン人もびっくり❗
本当に最低限で良ければ、highlightもなくて平気です😸
White lace and promises
白いレース そして約束
For nvim-navic to work, it needs attach to the lsp server.
nvim-navicが動作するためには、lspサーバにアタッチする必要があります。
You can pass the nvim-navic’s attach function as on_attach while setting up the lsp server.
lspサーバーのセットアップ時に、nvim-navicのattach関数をon_attachとして渡すことができます。
とのことなんですが、これはもはや過去のものとなっています…❗次項へ🐈
A kiss for luck and we’re on our way
幸運を願うキス さあ行きましょう
We’ve only begun
僕たちは まだほんの始まり
You can skip this step if you have enabled auto_attach option during setup.
セットアップ時にauto_attachオプションを有効にしている場合は、この手順を省略することができます。
auto_attachの登場によって、
on_attachすらも、言語ごとにdocumentSymbolProviderに対応してますかぁ❓な〜んていう確認すらも
自分で書く必要がありません😊 のほほん。
これ以上に “auto” なものがかつて他に存在したでしょうか⁉️
Before the rising sun, we fly
朝日が昇る前に、私たちは飛び立つ
highlightについては、これはなんとonenord.nvimが対応してくれています❗
ってことは、これもやっぱりコードを自分で書く必要がありません😆
使用しているカラーテーマがnvim-navicのhighlightに対応していない場合でも
Customise の “Example highlight definitions” で案内されているように、
自分で色をつけることができちゃいます😉
なんだかもう至れり尽くせりです🐹 のほほん。
So many roads to choose
選べる道は たくさんある
ということで、packerから呼び出します。
もう馴染みすぎてしまって、安堵感すら覚えますね😇
use {
'SmiteshP/nvim-navic' ,
config = function () require 'extensions.nvim-navic' end ,
requires = 'neovim/nvim-lspconfig' ,
}
We start out walking and learn to run
歩き始めて 走ることを覚える
And yes, we’ve just begun
そう、僕たちは まだほんの始まり
nvim-navic does not alter your statusline or winbar on its own.
Instead, you are provided with these two functions and its left up to you how you want to incorporate this into your setup.
nvim-navicは、それ自体で statusline や winbar を変更することはありません。
その代わり、この2つの機能が提供され、これをどのようにセットアップに取り入れるかはあなたに任されています。
:h navic.is_available (bufnr)
Returns boolean value indicating whether nvim-navic is able to provide
output for current buffer.
nvim-navic が現在のバッファの出力を提供できるかどうかを示す boolean 値を返します。
'bufnr' is optional argument. If bufnr is not provied, current open
buffer is used.
'bufnr' はオプションの引数です。bufnr が提供されない場合、現在のオープンバッファが使用されます。
navic.get_location (opts, bufnr)
Returns a pretty string that shows code context and can be used directly
in statusline or winbar.
コードコンテキストを示す整理された文字列を返し、statusline や winbar で直接使用することができます。
opts テーブルは nvim-navic のオプションのいずれかを上書きするために渡すことができます。
opts table can be passed to override any of |nvim-navic|'s options.
Follows same table format as *navic-setup*|'s opts table. You can pass
|bufnr| value to determine which buffer is used to get code context. If
not provided, the current buffer will be used.
navic-setup の opts テーブルと同じテーブル形式に従います。
bufnr 値を渡すと、コードコンテキストを取得するためにどのバッファを使用するかを決定することができます。
省略した場合は、現在のバッファが使用されます。
ネイティブに表示する方法なども示されていますが、
このサイトでは散々お世話になっているlualineを選んで進みます。
このサイトでは扱っていませんが、feline, galaxylineに表示する方法も示されています。
Sharing horizons that are new to us
新しい地平を 分かち合い
ということでやっていくんですが、これもやっぱり簡単です😉 のほほん。
statusline のlualine_cに、diagnosticsと並べて表示してみます。
require('lualine').setup {
sections = {
(中略)
lualine_c = {
{
'diagnostics',
sources = { 'nvim_diagnostic', 'nvim_lsp' },
sections = { 'error', 'warning', 'info', 'hint' },
symbols = { error = ' ', warning = ' ', info = ' ', hint = ' ' },
},
+ { function() return navic.get_location() end, cond = function() return navic.is_available() end },
},
(以下略)
このページ、出来てからまだ一週間も経ってないんですが、上に書いてあることは既に過去のものとなりました🌟
An example lualine setup
- { function() return navic.get_location() end, cond = function() return navic.is_available() end },
+ { 'navic' }
どないなっとんねん🤯 強すぎるやろー🐎🐎🐎
必須ではありませんが、packerにもlualine.nvimがnvim-navicを使用していることを教えておいてあげましょう。
use {
'nvim-lualine/lualine.nvim',
config = function() require 'extensions.lualine' end,
after = 'onenord.nvim',
requires = {
'rmehri01/onenord.nvim', 'nvim-tree/nvim-web-devicons',
- 'neovim/nvim-lspconfig', 'lewis6991/gitsigns.nvim',
+ 'neovim/nvim-lspconfig', 'lewis6991/gitsigns.nvim', 'SmiteshP/nvim-navic',
},
}
そしたらほらね、lualine上に現在のコードコンテキストが示されました。
例えば、tablineに表示してみるのもオシャレです😊 VSCodeとかは上にあった気もするし❗
ちょっと上の情報が多すぎる気もするので、git関連の情報を下に移動した方が良いかもしれません🤔
(buffersもだいぶ場所とるし…😅)
Watching the signs along the way
雲を見上げて
これで終わっても全然いいんですけどね❗
もうちょっとのほほんとして行ってもバチは当たらないでしょ😊
他にもいくつかカスタマイズ項目があるので、わたしが使用しているものだけ載せていきます😄
Talkin’ it over, just the two of us
二人きりで 語り合い
オフィシャルに示されているものをそのまま持ってきちゃいますが、
これをsetupに仕込んでおくとVSCode likeなアイコンになります。
extensions/nvim-navic.lua
icons = {
File = ' ' ,
Module = ' ' ,
Namespace = ' ' ,
Package = ' ' ,
Class = ' ' ,
Method = ' ' ,
Property = ' ' ,
Field = ' ' ,
Constructor = ' ' ,
Enum = ' ' ,
Interface = ' ' ,
Function = ' ' ,
Variable = ' ' ,
Constant = ' ' ,
String = ' ' ,
Number = ' ' ,
Boolean = ' ' ,
Array = ' ' ,
Object = ' ' ,
Key = ' ' ,
Null = ' ' ,
EnumMember = ' ' ,
Struct = ' ' ,
Event = ' ' ,
Operator = ' ' ,
TypeParameter = ' ' ,
},
VSCode like:
Original:
…。😮
ちょっと例がびみょーですが、全体的にアイコンが大きく見えるし、Booleanのアイコンは確かに変わってますね。ね❗
Workin’ together day to day, together
日々 歩んでいく、共に、共に
あと、上限の鬼対策でこれも入れておくと安心です。
extensions/nvim-navic.lua
depth_limit: integer
Maximum depth of context to be shown. If the context depth exceeds
this parameter, context information is truncated. default is infinite
表示するコンテキストの最大深度。コンテキストの深さがこのパラメータを超える場合、
コンテキスト情報は切り捨てられます。デフォルトはinfiniteです。
強いんだか弱いんだか「っていうか、なんやねんそれ🤨」ってなりますが、
こうしておけば百とか千とか、変なのとか来ても安心です❗
しかも9にしておけば十の悪魔にも強く出れます❗🤣
And when the evening comes, we smile
夕暮れが訪れると、微笑みあう
NOTE: You can set vim.b.navic_lazy_update_context = true
for specific buffers, where you want the the updates to not occur on every CursorMoved event.
It should help if you are facing performance issues in large files. Read the docs for example usage of this variable.
注:特定のバッファで、CursorMovedイベントごとに更新を行わないようにしたい場合は、
vim.b.navic_lazy_update_context = trueを設定することができます。
大きなファイルでパフォーマンスの問題に直面したときに役立つはずです。
この変数の使用例については、ドキュメントをお読みください。
:h vim.b.navic_lazy_update_context
Set it to true to update context only on CursorHold event.
true に設定すると、CursorHold イベント時にのみコンテキストを更新します。以下のような場合に有効です。
Could be usefull if you are facing performance issues on large files. Example usage
大容量のファイルでパフォーマンスの問題に直面している場合。
vim.api.nvim_create_autocmd("BufEnter" , {
callback = function ()
if vim.api.nvim_buf_line_count(0 ) > 10000 then
vim.b.navic_lazy_update_context = true
end
end ,
})
サンプルだとgroupがありませんが、のほほんと入れとくのもありだと思います😄
extensions/nvim-navic.lua
vim.api.nvim_create_autocmd("BufEnter" , {
group = vim.api.nvim_create_augroup('nvim-navic' , {}),
callback = function ()
if vim.api.nvim_buf_line_count(0 ) > 10000 then
vim.b.navic_lazy_update_context = true
end
end ,
})
So much of life ahead3
これから先 まだまだ長い
のほほんとできましたね😊
ちゃんとLSPを動かせるようになったことによる賜物です。
「胸を張っていい❗❗4 」
ところで〜…、nvim-navicのトップにこんな一文がありましたね。
You might also be interested in nvim-navbuddy .
Paired with nvim-navic, it will give you complete breadcrumbs experience like in an IDE!
nvim-navbuddy に興味をお持ちの方もいらっしゃるかもしれません。
nvim-navicと組み合わせることで、IDEのような完全なパンくず体験ができるようになります!
nvim-navbuddyの存在はつい最近知ったので、
この章のロードマップには無かったし、わたし自身が超使いこなせているってこともないんですが…😟
なんか面白かったので、このサイトでもちょこっとだけ触れたいと思います😆
そんなこんなで次回に続く… 🪼
We’ll find a place where there’s room to grow
一緒に歳を重ねられる場所を探していく
And yes, we’ve just begun
5
そう、僕たちは まだほんの始まり
Sharing horizons that are new to us
新しい地平を 分かち合い
Watching the signs along the way
星座を眺めて
Talkin' it over, just the two of us
二人きりで 語り明かし
Workin' together day to day, together, together
日々 歩んでいく、共に、共に
And when the evening comes, we smile
夕暮れが訪れたら、また微笑みあう
So much of life ahead
人生は まだまだ長い
We'll find a place where there's room to grow
一緒に歳を重ねられる場所を探していく
And yes, we've just begun
6
そう、二人はまだ ほんの始まり
2: 当初、インド地域航法衛星システム (Indian Regional Navigation Satellite System/IRNSS) と呼称されていたが、
2016年4月にModi 首相によって名称変更が行われ,NavIC (Navigation Indian Constellation) と呼ばれることになった。
Wikipedia より
3: この曲の誕生のきっかけは、1970年にCalifornia の
Crocker-Citizens National Bank が放送したテレビCM に遡る。
知名度の向上や競争への対応という課題を抱えていた同行は、社会人としての第一歩を踏み出そうとしている若い顧客層とのつながりを築こうとしていた。
広告代理店Hal Riney & Partners でクリエイティブ面を主導していたHal Riney は、
商品を直接売り込むのではなく、音楽を通じて物語を伝えるという、新しいタイプの CM を構想した。
Riney のチームは、作詞家の Paul Williams と作曲家の Roger Nichols に、
“あなたにはまだ長い道のりがある。そこにたどり着くまで、私たちがお手伝いしたい” という広告のスローガンを提示した。
そして、CMではあるカップルの結婚式と、その先に続く人生の歩みを描く予定だと説明した。
Williams と Nichols は、Riney が求めていた温かさと希望に満ちた雰囲気を表現し、わずか午後のひとときでこの曲を書き上げた。
結婚式の映像に Williams の心のこもった歌声を重ねたCMでは、意図的に銀行への直接的な言及を避け、誰にでも当てはまる普遍的なメッセージが伝えられた。
このCMは放送されるやいなや大きな反響を呼んだ。若い顧客層の共感を得て、銀行の知名度向上につながっただけでなく、結婚式や卒業式でこの曲を使いたいという問い合わせも急増した。
銀行の商品ではなく、物語と顧客の体験を中心に据えたこの独創的な手法は、広告業界に新たな基準をもたらした。
しかし、キャンペーンによって主に集まったのは、まだ融資の担保となる十分な資産を持たない若年層であり、銀行が本来ターゲットとしていた顧客層とは異なっていた。
そのため、CM 自体は人気を博したものの、Crocker-Citizens National Bank は最終的に放送を打ち切った。
それでも、この CM が広告と音楽の世界に残した影響は、その後も長く続いた。
5: We’ve Only Just Begun は、Roger Nichols の友人である Smokey Roberds によって、“Freddie Allen“という芸名で録音されていた。
1970年3月に発売されたものの、ラジオで大きく取り上げられることはなかった。
Richard Carpenter はテレビでこの CM を目にし、Paul Williams の特徴的な歌声にすぐさま気付いた。
フルバージョンが存在する可能性に興味を持った Richard は、両者がともに契約を結んでいたA&M Records で、
Williams と Nichols にこの曲は CM で使われた部分以外にも曲が続くのか尋ねた。(テレビCMで使われたバージョンは、ブリッジを含まない2つのヴァースだけで構成されていた)
Williams は、“実はもっと長いバージョンも既に書かれている” と答えたが、これは事実ではなかった。
ドキュメンタリーClose to You: Remembering The Carpenters の中で、Williams は当時を次のように振り返っている。
“それまでにも、アルバム収録曲や B面曲として、何曲かはうまくいっていた。でも、シングルヒットはまだなかった。
これは大きなチャンスだったんだ。A面曲を出せるかもしれないし、ヒットする可能性だってある。
だから、もしフルバージョンが存在しなかったとしても、絶対に ‘ある’ って言い張っていたよ!!”
Williams はその後、1971年のアルバムJust an Old Fashioned Love Song に、自身が歌うフルバージョンを収録した。
6: Karen Carpenter がリードボーカルを務め、兄妹によるハーモニーが際立つ Carpenters のバージョンは、
(They Long to Be) Close to You のリリースから 3か月後の 1970年8月に発表されると、即座に大ヒットを記録した。
この曲はグループにとって 2作連続のトップ10シングルとなり、Billboard Hot 100 で2位、
Cash Box シングル・チャートで1位を記録した。
また、Adult Contemporary chart では7週間にわたり1位を維持した。Cash Box 誌はこの曲を “魅力的な歌詞ときらめくようなプロダクション” と評した。
UKシングルチャートでは最高28位にとどまり、さほど大きな成功を収めなかったものの、We’ve Only Just Begun の不朽の魅力がその歴史的な地位を確固たるものにした。
2016年に ITV で放送された番組 The Nation’s Favourite Carpenters Song では、英国のリスナーによる投票で、Carpenters の楽曲の中で 2番目に愛されている曲に選ばれた。
Williams と Nichols にとって、この曲は転機となり、ソングライティング・チームとしてのキャリアを確固たるものにした。
The Carpenters の1971年のアルバム Close to You では、Grammy賞の Best New Artist と Best Contemporary Performance by a Duo or Group の受賞につながった。
1998年、この曲はその永続的な歴史的・文化的重要性が高く評価され、Grammy Hall of Fame に選出された。
2011年には、Rolling Stone 誌の
The 500 Greatest Songs of All Time リストに選出された。
Wikipedia より
(Extra) First Intermission
nvim-navbuddy