LoginSignup
1
0

20240320の日記、RR-automateの開発記録、WezTermの初期位置とサイズ設定、neovimあれこれ

Last updated at Posted at 2024-03-20

RR-automateの改良

Jake Paulの画像追加

DiscordにもJake Paulをなんとかしてくれ、というリクエストがあったけど、ほんとこれ欠片をゲットできないから強化できないし完全オワコンヒーローなんだよね
R.I.P.
Jake Paul.png

こんな関数はどう作るといいの?

  • エラーの数を返す
  • さらに何らかのリストを作って返したい
  • 呼び出し元がリストを渡して、関数の中で追加する、というのはやりたくない
  • すると、return (error_count, some_list) ってやるの?

Result型というのが似てるけど、ちょっと違う
PythonでのResult型、returnsでエラー処理してみる #Python - Qiita
そういう型をつくるのかな

もしかして根本的に考え方間違ってる?

クラスのメソッドが自分を返すとき

class Aaa:
    def method(self) -> Aaa:
        return self

は動かないので文字列にするか

class Aaa:
    def method(self) -> 'Aaa':
        return self

なんか長々しいのをimportするとよい

from __future__ import annotations

class Aaa:
    def method(self) -> Aaa:
        return self

オブジェクトを文字列にするのは__str__を定義するとよい

参考:クラスの特殊メソッド 文字列型「str」に変換する str - ALL Python(オールパイソン)
Heroクラスがあって、nameにZeusとか入ってるんだけど普通にprintしたのと、__str__(self): return self.nameを作っておいたのを比較
python:普通 (Pdb) print(_hero) <modules.rushroyale_stats.Hero object at 0x0000011F118D1610>
python:__str__ 作っておいたほう (Pdb) print(_hero) Zeus
とやってくれる。けどカンストかどうかわからなくなってしまったのでそこなんとかしないと

親クラスのメソッドを呼ぶ

super()を使うとよい

class Aaa:
    def method_name(self):
        なにかする
        
class Xxx(Aaa):
    def method_name(self):
        super().method_name()

WezTermの起動時の場所とサイズ設定

これ意外と見つからなかった
起動時オプションもあるらしいけどそうじゃなくってwezterm.luaでやる方法

こんな風にしたらできた

local wezterm = require 'wezterm'
local config = wezterm.config_builder()
local mux = wezterm.mux

-- position and size
wezterm.on('gui-startup', function(cmd)
  local tab, pane, window = mux.spawn_window(cmd or {width=158, height=56})
  window:gui_window():set_position(0,0)
  window:set_inner_size(800, 1020)
end)

mux_spawn_windowの引数にデフォルトの幅と高さを渡しているが、これは158文字、56行ということ、pixelとか%じゃないので注意(ほとんどのエディタがそうかもしれない)

参考:
Add an option set the initial window position · Issue #1794 · wez/weztermのやりとり
公式のリファレンスが役に立つ

neovim関連

pythonのコードを折りたたむ

vim.o.foldmethodあたりの2行追加

    config = function()
      if vim.loop.os_uname().sysname == 'Linux' then
        local configs = require('nvim-treesitter.configs')
        configs.setup({
          ensure_installed = { 'lua', 'python', 'yaml', 'json', 'markdown' },
	      sync_install = false,
	      highlight = { enable = true },
	      indent = { enable = true },
        })
	  end
      -- fold
      vim.o.foldmethod = 'expr' -- ココ
      vim.o.foldexpr = 'nvim_treesitter#foldexpr()' -- ココ
	end

foldの使い方:

  • zoで折りたたみを一段階開き、zOで折りたたみを全部開く
  • zcで折りたたみを閉じ、zCで全部閉じる
  • zRでファイル全体の折りたたみを開く

いずれもカーソル下、もしくは選択範囲に有効
ファイル全体対象のもあるはず

参考:
[Treesitter code folding : r/neovim]
これはリンクを張れなかった。内容がよろしくない的なのがでた
image.png

リンクじゃなくして張り付ける
https://www.レディっと.com/r/neovim/comments/njew3z/treesitter_code_folding/

デバッグしたい、、

pdb.set_traceで止めてみるのいい加減いやになってきた
いずれこのあたり参考にしてよくしたい

画像表示したい

ちょっとよくわからないな、、、今はあきらめよう
Neovim の Terminal で画像表示や動画再生 #Linux - Qiita
sixel、libvtermあたりがキーワードっぽいけど

Wezterm用の何かがあった
もうすこしだけ頑張ってみた
WezTermでUbuntu on WSL2を起動、img2sixelを使ってみた

がやっぱだめ
apt install libsixel-dev libsixel-bin してimg2sixelしたけど表示されない
ターミナルはWezTermなのでsixelに対応していると思うんだけどな
参考?: libsixel package : Ubuntu

なんかよくわからないけど画像をSIXELフォーマットという文字列に変換、ターミナルによってはその文字列を受け取ったときに文字ではなく画像として表示する、ということかと思いますが、門外漢すぎてわかりません、、

参考:

もしかしたらimg2sixelがWindowsで動いてなくてUbuntuで動いているからダメとか?img2sixelはWinで動かさないといけないとか?

sixelのビルド関連
関連のnvimプラグイン

neovim-remote

mhinz/neovim-remote: :ok_hand: Support for --remote and friends.
nvrでいい感じになるんだけど、右側のバッファに表示したいけど今のバッファに表示される
Seamlessly editing remote files in (Neo)Vim with Netrw and scp

コマンドラインカッコよく

普通は最下行がコマンドラインだけど、ポップアップするようになる
VonHeikemen/fine-cmdline.nvim: Enter ex-commands in a nice floating input.
image.png
物珍しいのでちょっと使ってみる
たぶん飽きて削除しそう
下に「挿入」とモード表示されるのがうざい

しばらくつかって不安定なのでやめた
:とfine-cmdlineを間違えたとき、たまに固まる
いままでの「:」から完全に乗り換えるならありかも

その他

git statusで日本語名が化ける

あちこちで書かれているのでやりかただけ
git config --global core.quotepath false でOK
また、git diffで日本語が化けるときは、
git config --global core.pager "LESSCHARSET=utf-8 less"とやるとよいそうだ、けど自分のところではしなくても平気だった

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0