추가:Gtag 명령으로 태그 생성
4829 단어 vim-fugitive
묘사
: Gtag은 태그 생성 - 태그 목록 및 태그 삭제에만 사용이 길은 통하지 않는다.이 명령들은 소식이 필요하지 않기 때문에
용도: Git.
메시지 버퍼 표시gitcommit 파일 형식을 사용합니다. ftplugin 때문에
이것은 제출 메시지를 작성하는 데 도움이 되고gitcommit 버퍼를 목표로 합니다
태그 메시지를 작성하는 데도 유용할 수 있습니다.
토론 #1
첫 번째 관문이 괜찮다.나는 차라리 전체:Gcommit
코드의 복사/붙여넣기를 유지할 필요가 없다.토론 #2
만약에 내가 프레임 함수를 만들었다면 이런 식으로 모든git 명령을 실행할 수 있다면 어떻게 해야 하나.이 함수는 도주범 기반 플러그인을 만들 수 있도록 공공 API의 일부분으로 공개할 수 있으며, 이 플러그인들은 버퍼를 여는 명령을 호출할 수 있어야 한다. 주요한 예는 많은 사람들이 사용하고자 하는git flow 플러그인이다.내가 시간이 있을 때, 나는 단독으로 한번 시도해 볼 수도 있다.그러나 이 함수는 많은 매개 변수가 필요합니다. 비엠 사전으로 매개 변수를 전달하는 것은 어떻습니까?나의 생각은 대체로 다음과 같다.call fugitive#execute_with_message_buffer({
\ 'git_command': 'commit',
\ 'msgfile': 'COMMIT_EDITMSG',
\ 'args': '--amend',
\ 'sanitize_flags': ['e', 'edit', 's', 'interactive', 'p', 'patch', 'signoff']
\ })
물론 명령이 실행된 후에 리셋 함수를 전달하거나 버퍼가 닫혔을 때 보내는 명령의 함수를 바꾸는 등 더 많은 매개 변수를 추가할 수 있습니다. 이 매개 변수는 :Gcommit
(또는 :Gtag
) 에 쓸모가 없을 수도 있지만, 다른 외부 플러그인이 필요할 수도 있습니다.토론 #셋
나는 이런 함수를 만들었다.pull request#500을 참조하십시오.내가 테스트한 결과로 말하자면, 그것은 운행이 양호하다.나는 또한 임시:Gtag
를 창설하여 실현했는데 그 작업 방식은 매우 매력적이다.function! s:Tag(args) abort
if a:args =~ '\v%(%(^| )-- )@<!%(^| )@<=%(-d|--delete|-v|--verify|-n|-l|--list\d*)%($| )'
\|| a:args =~ '\v%(%(^| )-- )@<!%(^| )@<=%(--sort|--column|--no-column|--contains|--points-at)%(\s+|\=)%(''[^'']*''|"%(\\.|[^"])*"|\\.|\S)*'
echoerr 'unsupported option'
return
endif
return fugitive#execute_with_message_buffer({
\ 'git_command': 'tag',
\ 'msgfile': 'TAG_EDITMSG',
\ 'args': '--annotate '.a:args,
\ 'sanitize_boolean_flags': ['a', 'annotate'],
\ })
endfunction
command! -nargs=1 Gtag :execute s:Tag(<q-args>)
나는 #501에 :Gtag
를 추가하고 싶지 않다. 왜냐하면 그것은 자신의pull 요청에 속하기 때문이다.#501을 수락하면 이pull 요청의 기초를 다시 설정하고 :Gtag
의 실행을 사용fugitive#execute_with_message_buffer()
으로 변경합니다.현재 이 당김 요청은 잠시 멈춰야 한다.토론 #4
이것은 내가 공공 API에서 약속한 것보다 더 많은 실현 세부 사항을 폭로했다.:Gtag
의 실현을 재구성해서 사용하셨습니까?그것을 보면 나에게 전진할 단서를 줄 수 있다.나는 줄곧 실현을 시도해 왔지만
:Gmerge
사실 그것은 이런 모델에 전혀 적합하지 않다. 이것은 나로 하여금 우리가 잘못 보았다고 느끼게 한다.토론 #5
와:Gtag
의 fugitive#execute_with_message_buffer
실현은 the one I posted above이다. 유일한 차이점은 기초를 다시 설정하면 Survious의 메커니즘을 사용하여 명령을 만들고 오류 메시지를 보내야 한다는 것이다.:Gmerge
에 대해 나는 두 개의 매개 변수 finish_git_command
와 finish_args
를 추가해야 한다. 초기 merege
명령 이후 인덱스가 통합 모드에 있기 때문에 우리는 그것을 완성하기 위해 commit
를 실행해야 한다.비밀번호입니다.
merginal#reloadBuffers
from Merginal를 사용하는 이유는 :Gmerge
파일의 내용을 변경했지만 삭제하면 작동할 수 있기 때문입니다. (Vim에서 버퍼를 다시 불러오라고 알려 줍니다.)function! s:Merge(args) abort
let l:result=fugitive#execute_with_message_buffer({
\ 'git_command': 'merge',
\ 'msgfile': 'MERGE_MSG',
\ 'args': '--edit '.a:args,
\ 'finish_git_command': 'commit',
\ 'finish_args': ''
\ })
call merginal#reloadBuffers()
return l:result
endfunction
command! -nargs=1 Gmerge :execute s:Merge(<q-args>)
토론 #6
나는 이 PR.@tpope를 회복하고 싶다.execute_with_message_buffer
는 적합하지 않다고 말했다. :Gmerge
비록 내가 성공적으로 그것을 일하게 했지만 나는 그것에 대해 많은 조정을 해야 했다. 그래서 나는 너의 관점에 동의하는 경향이 있었다. 그것은 너무 추악한 실제 세부 사항을 폭로해서 공공 API에 적합하지 않다고 생각했다. (비록 나는 임시 확장 플러그인에 공공 API를 제공하는 것이 좋겠다고 생각하지만...)그럼에도 불구하고
:Gcommit
와 :Gtag
에 모두 효과가 있기 때문에 나는 그것을 실현:Gtag
의 사유 함수로 하고 코드가 중복되지 않아도 된다. 어때?토론 #7
#501을 닫았을 때 이 점을 무시했습니다.매우 개방적이지만, 나는 네가 지금 기본적으로 다시 시작할까 봐 걱정된다.나는 매우 협소한 개인 기능에 대해 매우 만족한다.토론 #8
시험job
분지.그것은 편집기 호출 명령에 대한 일반적인 지원을 제공하여 이 문제를 영원히 해결할 수 있을 것이다.
Reference
이 문제에 관하여(추가:Gtag 명령으로 태그 생성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://github.com/tpope/vim-fugitive/issues/500텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)