簡體   English   中英

如何調試 vim indentexpr 腳本?

[英]How do I debug vim indentexpr script?

我已經下載了一個看起來非常全面的 verilog/systemverilog 縮進文件。 但是,有一個問題:它不起作用。 我正在查看 vimscript 代碼並希望修復它(我在 vim 8.2 上,可能存在版本不匹配)以及增強它。 但是,我遇到了調試問題。 具體來說,indentexpr 腳本有一個變量 v:lnum,它在按下 indentkey 並評估 indentexr 時設置。

但是,我不知道僅在 indentexpr 調用上進入調試模式的方法。 我嘗試在 vimscript 中手動調用 function ,但這將 v:lnum 作為一些垃圾編號(好吧,調用 indentexpr 的最后一行)。 當我實際按下調用 indentexpr 的鍵時,有沒有辦法進入調試模式?

使用v:lnum的最佳方式是作為 function 的參數。 這是一個例子:vim-ruby 的 indentexpr 設置曾經看起來像這樣:

setlocal indentexpr=GetRubyIndent()

在 function 內部,變量v:lnum用於獲取調用它的行號。 正如您所發現的,這非常不方便。 所以,更好的方法是:

setlocal indentexpr=GetRubyIndent(v:lnum)

因此,在腳本中找到設置indentexpr的位置並將其更改為將魔術v:lnum變量作為參數。 然后,您可以重寫 function 本身以采用單個參數:

function! GetRubyIndent(lnum)

現在,在 function 中, a:lnum變量將是行號,您可以使用該參數調用 function。 在 function 中的任何地方用a:lnum搜索並替換v:lnum 縮進腳本現在應該像以前一樣工作,您將能夠使用行號手動調用 function。

這是在 vim-ruby 存儲庫中執行此操作的特定提交, 例如

此外, echomsg "foo"將打印一條消息,之后您可以通過運行:messages命令閱讀該消息。 我可以推薦Decho插件以獲得易於閱讀的調試消息。

使用我的 systemverilog 腳本。 這個沒有問題。 https://github.com/nachumk/systemverilog.vim

https://www.vim.org/scripts/script.php?script_id=4743下載超過 13k

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM