Dear Daniel, first of all thank you for the prompt reply. To reproduce the issue try to do what follows. Let's assume that there is a file called 'rescheduler.py' and a directory called 'RESCHEDULE_EXAMPLE' in a svn repository (both under version control), then > svn diff r does not complete it as expected, since it suggests only the directory 'RESCHEDULE_EXAMPLE'. The same odd behavior can be also experienced with 'log' argument (i.e. svn log). With my patch it should provide all possible completions (i.e. all files and disr in the folder), since I removed completely the smart logic, which was present in the original functions (i.e. I removed everywhere the -g option and the relative argument of function _file) I also attempted to reimplement the functions _svn_status and _svn_controlled to restore the original logic as follows (( $+functions[_svn_controlled] )) || _svn_controlled() { sta=$(svn status $REPLY) stat=$sta[1] [[ $stat != "?" ]] } (( $+functions[_svn_status] )) || _svn_status() { sta=$(svn status $REPLY) [[ "$sta" != "" ]] } but I am not sure they work as the original versions… I agree with you that _svn_conflict could be kept. According to what you wrote a possible implementation of _svn_deletedfiles could be sta=$(svn status $REPLY) stat=$sta[1] [[ $stat == “D" ]] what do you think? The patch file is attached, cheers Cristiano ____________ Cristiano De Michele, Ph.D. Department of Physics Tel. : +390649913524 University of Rome "La Sapienza" Fax : +39064463158 Piazzale Aldo Moro, 2 I-00185 Roma - Italy homepage: http://www.roma1.infn.it/~demichel > Il giorno 24 ago 2019, alle ore 19:24, Daniel Shahaf ha scritto: > > Cristiano De Michele wrote on Fri, Aug 23, 2019 at 18:38:07 +0200: >> the subversion functions for tab completion provided by current stable >> version of zsh (5.7.1) are obsolete and they do not work as expected >> (e.g. 'svn diff ’ does not provide all files under revision >> control), > > I can't reproduce this. What files does it not complete? > >> simplifying the logic of tab completion, in that it completes all >> files and dirs in the current folder (i.e. not only the ones under >> revision control), > > Note that completion should also complete files that are missing (status > «!»), scheduled for deletion (status «D»), and in the case of «svn up», > files that are cropped (after an earlier «svn up --set-depth=exclude»). > Does your patch regress either of these cases? > > (If multiple things are broken, a patch needs to fix only one of them to > be acceptable — provided that it doesn't regress anything else. If it > does, it will need to be considered on a case-by-case basis.) > >> since the latest svn versions store all files in the folder >> .svn of the root directory of the repository. > > Context for the list: > > Subversion through 1.6.x put .svn dirs in each and every subdirectory, > like CVS did. Subversion ≥1.7 put one .svn dir in the working copy > root, like git and hg do. Subversion 1.7.0 was released in Oct 2011. > Subversion 1.6.x EOL'd in June 2013. At this point I see little value > in continuing to support the ≤1.6 working copy format in zsh. If anyone > disagrees, speak up. > >> Hence, I patched a bit the original file making svn completion work >> again but > > Thanks for basing your work on HEAD of master. Please send patches > as unified diffs, not as full files. That's easier to read and review. > > Non parlo italiano. If the comment at the top of the file is pertinent, > please translate it to English. > > Why did you delete _svn_conflicts()? The pattern there is still valid. > > I'm not fond of deleting _svn_deletedfiles(), _svn_controlled(), and > _svn_status(). If there's no way to fix them, I'd prefer to keep them > as functions that return true, so it would be easier to restore the > functionality once someone figures out an implementation. > > _svn_status() could probably be salvaged just by making it check the > mtime of wc.db and wc.db-journal instead (more or less; IIRC SQLite has > some pragmas/options affecting naming of auxiliary files). > > _svn_deletedfiles(), by using «svn st | grep '^D' | cut -c8-». > > _svn_controlled(), by using «svn info -R» or «svn st --xml». (It would > be wrong to use «svn ls» there: that wouldn't DTRT on mixed-revision > and/or switched working copies.) > > And looking further into it, _svn_deletedfiles() and _svn_controlled() > can both be computed by a _single_ command: «svn info -R > --show-item=schedule». > > Thanks for the patch! > > Cheers, > > Daniel