추가: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

:Gtagfugitive#execute_with_message_buffer 실현은 the one I posted above이다. 유일한 차이점은 기초를 다시 설정하면 Survious의 메커니즘을 사용하여 명령을 만들고 오류 메시지를 보내야 한다는 것이다.:Gmerge에 대해 나는 두 개의 매개 변수 finish_git_commandfinish_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분지.그것은 편집기 호출 명령에 대한 일반적인 지원을 제공하여 이 문제를 영원히 해결할 수 있을 것이다.

좋은 웹페이지 즐겨찾기