-
Notifications
You must be signed in to change notification settings - Fork 10
/
TODO
1752 lines (1242 loc) · 58.7 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
==================
TODO: xxdiff
==================
.. contents::
..
1 Next Release
1.1 Priorities
1.2 Qt4
2 Less Urgent, but do it soon too
3 Look at ``wiggle`` integration, it seems like a great idea
4 Goals for 4.0 stable release:
5 Promo
6 Other
Next Release
============
Priorities
----------
- xxdiff: Make xxdiff recursive able to list all the files when a
directory is only on one side. Walk and enumerate the files of an
inserted or deleted directory.
- xxdiff: Fix geometry window sizing problem.
- xxdiff: Convert it to port to Qt4 and support unicode
- Windows port, use the patch from Trevor Harmon
- MAC port
- Patch output support?
Qt4
---
- Bug with saving with ignored patterns: Which side gets selected?
Ah I see.
The problem is a definitional one.
When you say "Save as..", it is not clear what to do with the ignored regions, xxdiff should warn about that.
It's indeed a problem...
The issue is that xxdiff does not output sed commands... it selects the regions and saves the results directly.
You should probably not use the ignore switch with save... I never considered that case.
BTW, "Save As Right" does not mean anything about selecting text from the file on the right, it is the same as "Save As"
and selecting the filename of the file on the right.
THanks for the bug report, I'll add it to the TODO list.
cheers,
Lee Gramling wrote:
> > Martin,
> > Thanks for your quick response, I am sure its just my expectations that
> > are wrong but here is better description:
> >
> > Run the following command on the files listed below:
> > xxdiff d2.iv d1.iv -A "-I position.*"
> >
> > xxdiff when show the following differences:
> > d2.iv d1.iv
> > position 50 50 200 position 50 50 280 #these are
> > ignored and not highlighted
> >
> > angle 3.19 angle 1.57
> >
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> >
> > Select the right angle 1.57
> > and the left Text3 block
> >
> > Then do a File->Save as right
> > File->Redo diff
> >
> > Now the files looks like this:
> > d2.iv d1.iv
> > position 50 50 200 position 50 50 200 #d1.iv has the
> > wrong value for position
> >
> > angle 3.19 angle 1.57
> >
> > Text3 { Text3 {
> > string = string =
> > GlobalField { GlobalField {
> > type "SFTime" type "SFTime"
> > realTime realTime
> > } }
> > . realTime .realTime
> > } }
> >
> > The ignored position line has been copied to the right file (I would not
> > expect this).
> > The selected right angle 1.57 is correct and the left selected Text3
> > line has been added as expected.
> >
> > I guess what I expect is more like what would happen if you ran diff
> > with the ignore
> > diff d2.iv d1.iv "-I position.*"
> > 15c15
> > < angle 3.19
> > ---
>> >> angle 1.57
> > 25,32d24
> > < Text3 {
> > < string =
> > < GlobalField {
> > < type "SFTime"
> > < realTime
> > < }
> > < . realTime
> > < }
> >
> > The ignored lines do not get output as sed commands.
> >
> > Thanks for your time.
> >
> > Lee
> >
> >
> > d1.iv:
> > Separator {
> > PerspectiveCamera {
> > position 50 50 280
> > }
> > Text3 {
> > string "undefined" =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > RotationXYZ {
> > axis Z
> > angle 1.57
> > }
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > }
> >
> > d2.iv
> > Separator {
> > PerspectiveCamera {
> > position 50 50 200
> > }
> > Text3 {
> > string "undefined" =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > RotationXYZ {
> > axis Z
> > angle 3.19
> > }
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > Text3 {
> > string =
> > GlobalField {
> > type "SFTime"
> > realTime
> > }
> > . realTime
> > }
> > }
> >
> >
> >
> > On Nov 19, 2007 10:04 AM, Martin Blais <blais@furius.ca
> > <mailto:blais@furius.ca>> wrote:
> >
> > Hi Lee
> > Can you send a step-by-step description to reproduce the problem?
> > I don't quite understand your explanation below.
> > (I would highly doubt a bug in that part of xxdiff at this point.)
> > thx
- Apply Trevor Harmon's patch for the port to Qt4.
- Finish half-started save-to-patch feature:
* Add an option to the xxdiff GUI to invert the selections, or to save the
negative of the selections to a file. Using this, we could split a file in
half. This should not be available in 3-way diffs mode.
- Fix this bug::
Grant McDorman <grmcdorman@gmail.com>:
I've got xxdiff running - with patches on Win32 with Qt Free 4.2.0 (and
mingw). Fixes were required, not suprisingly.
There was also what appears to be a real bug that showed up. In
hordiffimpl.cpp, there's a loop that starts like this:
while ( x > -1 && y > -1 ) {
#ifdef XX_LOCAL_HDIFF_DEBUG
cerr << x << " " << y << " = " << htable[ x + y*tlen0 ] << endl;
#endif
if (
( htable[ x + y*tlen0 ] == ( htable[ x-1 + (y-1)*tlen0 ] + 1 ) /*||
htable[ x + y*tlen0 ] == htable[ x-1 + (y-1)*tlen0 ]*/ ) &&
ctext0[x] == ctext1[y]
However, the problem is if x or y becomes 0, then one can have a negative
subscript on the second htable index. This can cause crashes. I fixed by
making it '> 0' instead of '> -1'.
There were also layout problems, such as the headers (filename/line number
way too bing); it's not clear to me if this is a Qt4 problem or a Win32
problem.
There are still a few minor problems: the file names start up blank (if
one does 'replace file' from the file menu, it's labelled correctly); and
the colour swatches in the display options dialog, Colors tab, don't
change colour at all. I haven't tracked those down yet.
I can send you the patch on request - or submit to SF.
Less Urgent, but do it soon too
===============================
* Add a '-w' option to invoke.py (!?), to ignore whitespace changes easily.
* When the comments file has not changed, warn the user that he did not appear
to have saved the file.
* It would be awesome if select.py had an option to select by file-type
(e.g. running “file”). Open a child running a “file” command and feed it the
filenames one-by-one rather than starting a new one everytime.
* Look at fixing the bugs in xxdiff/test/bugs
* For MAC OSX: if there are no files specified, invoke a special double- file
dialog chooser to graphically select which files to diff.
* xx-svn-diff: Comments file: To add new files to the comments file:
a) Check if at least one line of the comments file is the same as any line of
the status OR if the file is empty
b) if so, add all the status lines tha tdiffer at thte end of the comments
file (with an empty line in between)
c) otherwise we do not append the new statii lines
* Bug: toggling "Format clipboard text" at runtime does not seem to have an
effect.
* Fix [1200496] Diff Errors reported with certain text files
* xx-svn-diff: Implement fetching any two revisions and displaying the filelist
and the diffs graphically for those changes.
* See open bug [1174957] Odd behavior when "-O" and "-E" used together: When
--exit-if-no-conflicts and --merged-filename are specified together, and there
are no conflicts, output the result file to the merged filename.
* There is a slight rendering bug with my current font (see png file under /bugs)
* Define a clearer list of verbosity levels that is consistent across all the
scripts and change the levels.
* Automatically log output to a log file in the backups directory if the backups
are enabled, that would rock.
--------------------------------------------------------------------------------
(Scripts)
* When xxdiff is invoked with --decision and -D, which answer should result?
Right now we output NODECISION, but perhaps ACCEPT would be more appropriate?
I'm not sure.
* Write an asynchronous background loop in xformloop for slow processes, where a
number of diffs could accumulate in the background and be ready to diff while
whatever is being done to produce the diffs keeps running. Grab this from my
good old exp preview. Put this in ``lib/python/xxdiff/async.py``
(Note: this goes hand-in-hand with the diff'ing of arbitraty SVN revisions, as
we will have to fetch files from the network and this might be slow.
Implement both of these features at the same time.)
* xx-svn-diff: When the parent process gets killed, make sure to kill the
editor as well, otherwise it can be really annoying because this leaves swap
files around if we restart manually killing the editing window (which can
happen if you leave it in the background).
* Provide a way to invoke xxdiff with alternate diff programs.
- Using this code, provide code to create alternate diff programs that compare
pairs of things, with or without subdiffs, by outputting POSIX diff output.
* xx-rename: With respect to case sensitivity, supports the smart
replacement behaviour that is present in GNU emacs.
* Implement a better side-by-side diff that includes line numbers and context.
The current side-by-side diff sucks. One of the things that could be done
easily is reuse diff --side-by-side without compressing, adding the line
numbers by hand, and then compressing by hand too.
- Add an option to generate normal diffs rather than side-by-side.
* xx-patch: Finish It!
* You have to deal with 'delete' and 'add' cases.
* Q: what do we do when patch fails? How do we treat it?
must read the output messages of patch and warn the user.
* xx-svn-diff: TODO
* --launcher: Create simple PyQt or CURSES GUI for listing files from ``svn
status``, on which you can click to view the diffs.
* Implement including differences from the ancestor file with 3-way diffs.
* Implement viewing differences between any two revision in the repository.
* Wouldn't it be nice to have a decision mode here? Maybe, maybe not. You
can save as merged if desired, the merged filename is set to the output
filename.
* Fix these old subprocesses by using the subprocess module::
banane:~/p/.../python/xxdiff$ igrep os.popen .
./scripts/encrypted.py: fin, fout = os.popen2(decodecmd % m, 'w')
./scripts/encrypted.py: fin, fout = os.popen2(cmd, 'w')
./scripts/cvsdiff.py: cin, cout = os.popen2(
./scripts/patch.py: cin, cout = os.popen2(cmd, 'rw')
* Implement --single-right: we should be able to display single files on either
side. You should fix xx-match after that, so that it passes the correct
options to xxdiff.
* Consider putting a check for binary files in xxdiff.invoke.* and raise a
RuntimeError if the files aren't text.
* xx-rename: We should able to read renames from a file, two names by line, or
something similar.
--------------------------------------------------------------------------------
* Idea: we could modify xxdiff so that when we reload, we could output RELOAD
and that could mean for the client to redo some task in the background, then
let xxdiff know to reload after that. This would allow xxdiff to communicate
with the parent process. This should actually be part of a larger protocol
for client to communicate with xxdiff and vice-versa. This is a cool idea,
but a lot of work for very little benefit.
* Check if this bug is gone::
I set up xxdiff-subversion on my workstation following web page at
http://xxdiff.sourceforge.net/local/doc/xxdiff-subversion.html. It works
just fine for svn diff command. But for svn up, if there is a conflict,
xxdiff will pop up showing three way difference. When I close xxdiff
window, I found my working copy of that conflicting file became blank!
So I lost all my changes in that file!
My current solution is not to set diff3-cmd in ~/.subversion/config file.
--Long
PS: I am using FreeBSD.
pkg_info -Ix xxdiff
xxdiff-3.0.3 QT interface to view/merge differences between 2 or
3 files
pkg_info -Ix subversion
subversion-1.3.0_3 Version control system
* From Michalis Giannakidis, mgiann@beta-cae.gr
Do this:
What, here in our company, find useful about cvsxxdiff is:
o) cvsxxdiff is one file. No python module directory or initialization is
requierd.
o) Do a 'cvs up; cvsxxdiff' before commit to see all the local changes we have
made.
o) Do 'cvs up; cvsxxdiff -b 1 file.c' to see the last chages that were made on
a file by a colleague.
o) We often need to track bugs in our code. This means going back to previous
revisions, thus doing ex: 'cvsxxdiff -b 1 -b 2 file.c' to compare the
previous with the 2nd previous revision. (similar with cvsxxdiff -r 1.1 -r
1.2 file.c)
o) The utility prints in the standard output the logs between revisions i
and j ( ex: cvsxxdif -b i -b j file.c)
One script to do it all.
Look at ``wiggle`` integration, it seems like a great idea
==========================================================
From: Ken.MacLeod@radisys.com <Ken.MacLeod@radisys.com>
To: blais@furius.ca
Date: Aug 10, 2006 9:17 AM
Subject: xxdiff: patch wiggling
Reply | Reply to all | Forward | Print | Add sender to Contacts list | Delete this message | Report phishing | Show original | Message text garbled?
A long while back in 2003, you wrote,
http://www.uwsg.iu.edu/hypermail/linux/kernel/0203.2/1177.html
Not long after, Niel Brown announced 'wiggle',
http://www.uwsg.iu.edu/hypermail/linux/kernel/0305.2/0762.html
Niel mentions one of the shortcomings in wiggle is that you can't "see"
what it's done or will do. Here's where xxdiff can pick that up. These
are just thoughts off the top of my head, sorry I won't have patches
forthcoming with implementation :-/
I'd like to see the entire patch in the left pane, probably in the format
used by gitweb[1] or gitk[2, screenshot in 3].
Selecting a patch hunk on the left brings up the corresponding source in
the right pane, with the "new" changes highlighted (with horizontal diff,
natch :-). The old changes are not necessary, though a three-pane view
could have them on the left.
The hunks in the patch pane should be marked according to their merge
status, ie. green for success, yellow for offset, orange for fuzz, and red
for failed. A "check mark" would be nice for hunks that have been
confirmed and/or fixed up.
If a patch fails because the file cannot be found due to a rename, the
merge path should be editable. (Auto-rename is possible if both trees are
available.)
Wiggle's algorithm is good for finding better matches.
Changes should not be applied until selected from a menu.
After wiggling, the patch should be saved so that it can be emailed. The
updated patch should now cleanly apply against the tree it was wiggled to
(ie. counts and offsets corrected, a la recountdiff).
OK, that's all I can brain dump for now. Of course, it wasn't until after
writing it that I see xx-patch, so, take whatever good bits seem to make
sense :-)
-- Ken
[1]
http://www.kernel.org/git/gitweb.cgi?p=linux/kernel/git/torvalds/linux-2.6.git;a=log
[2] http://ozlabs.org/~paulus/gitk/
[3] http://lwn.net/Articles/140350/
--------------------------------------------------------------------------------
- Install xxdiff on windows, when Qt4 non-commercial comes out
- try beyondcompare::
Si jamais tu veux retravailler sur xxdiff, je viens de trouver le canif
suisse des diffs graphiques, tu manqueras pas d'id\x{00E9}es pour xxdiff
avec \x{00E7}a... Absolument incroyable (mais c'est un produit
commercial). \x{00C7}a s'appelle "Beyond Compare" de Scooter Software. Le
genre de programme qui te fait dire "enfin sti". \x{00C7}a compare aussi des
r\x{00E9}pertoires (r\x{00E9}cursivement itou, avec des diffs par fichier),
et c'est aussi incroyablement facile de faire un merge. Vraiment
g\x{00E9}nial..
http://www.scootersoftware.com/
* Bugs with horizontal diffs:
However, I do have a suggestion. Your code does not
seem to be using a logic such as the Ratcliff/Obershelp
pattern recognition algorithm, which is adopted by some
other common graphical diff tools. Using such a logic,
they search for the longest common substring between
two strings. The match is then used as an archor,
around which they would recursively do the same for the
left and right remaining pieces.
New feature, ignore regexp patterns::
Bonjour Martin,
Comme convenu voici le feature que je trouvais utile dans Examdiff Pro :
- Regular Expression support dans le champs Ignore.
Exemple :
Faire une comparaison de 2 fichiers contenant des UID que je ne veux pas considérer comme différent lors de la comparaison.
Contexte :
j'avais a comparer des fichiers generes par un generateur de code java. les fichiers contenait des code pockets du genre:
// BEGIN Code pocket ID : XXXX-XXXX-XXXX-XXXX
// Some code to be preserved when regenarating
// END Code pocket ID : XXXX-XXXX-XXXX-XXXX
Je pouvais avec Examdiff Pro exclure de ma comparaison les "Code pockets" au
complet (pas seulement les tag mais aussi le contenu du code pocket avec un
regular expression. Voil
* fix bug on tp with 3-way, press S::
QPixmap: Invalid pixmap parameters
QPainter::begin: Cannot paint null pixmap
QPainter::setPen: Will be reset by begin()
Segmentation fault
* with option --single it would be nice to be able to say that the file should
be displayed on the right side and not the left, this would be nice for
directory diffs when clicking on a hunk where there is only a file on the
right. Right now the file appears on the left anyway, which just looks wrong.
* Maybe create a new return code for the combination of ``--decision`` and
``-D``::
int XxApp::exec()
{
if ( _dontShow ) {
// If we asked for a decision, at least output something.
// FIXME: maybe this should become NODIFF?
if ( _cmdline._forceDecision == true ) {
std::cout << "NODECISION" << std::endl;
* prepare to build with qmake
* add the horizontal marker to the options dialog as well.
* xxdiff test/tabs/w2a test/tabs/w2b::
while ( true ) {
#ifndef XX_INTERNAL_DIFFS
// FIXME here we should change the code so that reading a line
includes // the carriage return characters within the line. This
results in // harmless but nonetheless annoying empty diff error
messages.
QString line = outputs.readLine();
* Known problem:
- set tab width to 0
- diff files which have tabs and spaces but other characters the same
- set hordiff threshold low enough
We get minimum hordiff width to 1 with this combination.
I think we would need to recompute the diffs.
.. end
(Horizontal Diffs)
- post-process, idea from Derrick Moser, slide to the left until a word boundary
is met on either side or is impossible
Goals for 4.0 stable release:
=============================
* Finish scrollbars resizing for paned merged view.
* Improve error recovery in rcfile parsing.
Promo
=====
- promotion on xxdiff webpage before release: ask ev and gd for a quote, how
many developers, etc.
- send email to GnuPG mailing-list about xx-encrypted script
Other
=====
* write a script that can preview ``xdelta patch``.
* add a command to keep spit out the output of diff in a window (useful for
debugging as well)
* add an option to edit the file from the popup menu, it's more direct like
that than using the File menu.
- same for Save As...
- also add a "save as and edit" option.
* From qt-3.2::
QPainter's complex drawText() function has been highly
optimized. Despite its support for complex unicode scripts, it now
performs better than its less unicode-capable counterpart in Qt 2.3.
So I should port to use that instead.
* find a way to use the doc.txt docutils format for all documentation
(you can generate PDF with docutils and pdflatex already).
* xxdiff -D that succeed leaves a mutex destroy failure message... find the bug!
2) make able to see if there are any changes at all, to do this, we'll
compare all chars of the buffers by hand, if there is ANY differences that
it is different; check size of buffers first
* cursor is not following scrolling anymore, FIX THIS this is annoying when
using the keyboard
* change config to use XML instead, add 'xxdiff --dtd' to obtain dtd.
* change key binding for variable text selection
* check out bug from (wesleysmith)
If I select the line from the first column and then
run "Save as left", I get a dialog that says "The
selections are all on this file. Save anyway?". If I
choose either the middle or right column and run "Save
as left", then I don't see this message. I also see this
message if I select the middle column and then
run "Save as middle". It seems to me that this
message doesn't really apply to the unmerge3 case,
and should be disabled.
Also, in the File menu, "Save as left" and "Save as
middle" are activated, but "Save as right" is grayed out.
That's odd because all three columns are the same file.
Seems like they should all be available, or maybe only
one, with the name changed to "Save".
A similar problem is seen with the "Edit ..." menu items
on the File menu.
2 prorities for review:
1) make able to make comments rapidly
2) make able to see if there are any changes at all (turn off all ignore options at once?)
or perhaps look at the diff output
* quote output of clipboard header format \n's to be able to read back the
xxdiffrc file.
* create separate popup menus for different builders instead of ifdef
technology
* add "Edit Merged Filename" to resolve conflicts.
* implement --exclude and --exclude-from for directories, it would be really
useful for CVS directories
* implement arbitrary secondary selection, with filename in the clipboard,
for making easy merge comments, that would print filename, and pasted text
* Special "File" dialog with display and real filenames, with save as,
replace and edit buttons.
* try this: with horizontal diffs, remove two first chars of a line whose
indentation has changed, the horizontal diff will span from the beginning
of the line. this is not desired.
* in 3-way diffs mode, when you ignore one file, you must recompute the
horizontal diffs between the other two files only! this would be very
useful actually.
* Add Accel.Quit alias for Accel.Exit
* xxdiff --version now results in the following error msg from Qt 3:
Mutex destroy failure: Device or resource busy
fix it. this doesn't seem to have other implications.
(Split swap join improvements)
* Michael idea: split swap join where the cursor line is located
(Urgent)
* Update documentation with this version.
* Make per-hunk display ignore toggleable
// * ./xxdiff mine util.h app.h Segfaults!!!! fix this??!
// i think i just fixed it already
* XxText should accept() or ignore() its events.
* When in unmerge mode, saveAsMerge feature initializes merge file name as 01234567.
* Add format for filename label as well, useful for making merge comments.
* Invert logic of "Remove Empty Conditionals", that should be the default.
(Per-hunk Ignore Whitespace)
* Not sure that the split-swap-join vs. ignore-display behaviour is correct,
perhaps should become green anyway when split?
* Maybe we can use the horizontal diffs computation to speed up the per-hunk ws?
* Implement partial hunk ignore ws, newlines have to match (but you can skip some).
(Ignore Blank Lines)
* Consider.... should we do something about ignored SAME sides when saving? I
mean, now we just choose side 0, but perhaps we want to give the user
control over that?
(Misc)
* scrolling with the scrollbar doesn't seem to restrict the cursor anymore
* Some of our display algorithms allow the user to effectively ignore certain
hunks. If all diff hunks are ignored by our display algorithms, could we
prevent xxdiff from even showing up at all? And if we do want it to remain
visible anyway, I think we should somehow put markers indicating at least
where whitespace changes occur anyway, in the margin or something, just to
be able to figure out if a file really does has some [whitespace] changes
or nothing at all.
* The cursor is not restricted by scrolling using the scrollbars anymore!!!
* When pasting to the clipboard, turn tabs into spaces, for much better
results when pasting! remember, the clipboard formatting can otherwise
change it.
* Paned view problem, the hash pattern that is drawn is not cleared before it
is drawn, switch workspaces with paned view and you'll see immediately.
(Colors)
* There is no SelectedNonly color!
(KDE Port)
* Trevor:
By the way, I forgot about a bug in my patch. If you go to Help|User's
Manual and click on the "GNU website" link at the end, then a web browser
opens just as it should. But if you click on a local link, such as
"Introduction", then the web browser again opens, instead of just jumping
to the point in the text. Help me remember to fix this sometime.
* ideas from Martin Pool (mbp@samba.org)
>
> - Quick keypresses to switch to next/prev file
try C-n, C-p, n, p, etc. (see the menus for accelerators)
or do you mean, a key to open the next/prev file in another diff?
if so, that's a good idea, i'll put it on the todo list
>
> - Single button to ignore *~, .#*, CVS, and similar garbage. (The best
> way I found was to edit the diff options.)
i want to do that eventually, that's on the todo list as well
* fix this problem:
Hello Martin,
there's someone reporting that error here:
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=141809
and I do suspect it to be a Qt bug (happens on my box too btw.). I
searched the web a bit, but couldn't find any solution. Here's the place
where the error is reported btw.:
http://www.linux.cz/lists/archive/linux/131195.html
Does that happen on your box too? Is it a Qt problem?
*t
-----------------------------------------------------------------------
Tomas Pospisek
sourcepole - Linux & Open Source Solutions
http://sourcepole.com
Elestastrasse 18, 7310 Bad Ragaz, Switzerland
Tel:+41 (81) 330 77 13, Fax:+41 (81) 330 77 12
------------------------------------------------------------------------
* Cool idea: tooltip when hovering over a hunk should show the diff marker
text. Or perhaps a popup menu could pop up the textual diff output.
(Build)
* Try converting build system to use Jam instead of tmake.
* test recent changes to rendering code to see if it solves the problems with
qt-3 rendering.
(Automatically-Saving Resources)
* Some ppl want to have resources saved automatically. Consider an
implementation.
(Self Debugging and Error Reporting)
* Print commandline arguments when crashing with an internal error, as well
as resources state if possible.
(Font Drawing Problem)
* There is a bug whereby editing the font in the dialog does not work
properly, the dialog does not show the appropriate font. This occurs when
the font is set in .xxdiffrc. Version: 3.1, the contents of the resources
file was::
FontText: "Lucidatypewriter,14,-1,2,50,0,0,0,1,0"
Accel.Exit: "Alt+Q"
* Italics fonts sometimes don't draw all that they should be.
(Memory Checking)
* Run valgrind and mpatrol once again to stabilize.
(Raw diff output)
* Implement a window to display the raw diff output. Some people may enjoy
this. kompare (kdiff2) has this.
* Implement a small widget that would display the current diff output chunk,
or perhaps put it in the tooltip.
(Misc)
* When using replace file on a local file, "./" is added before the displayed
filename, find out why, and eradicate if possible.
* Convert arrays of string to use a QStringList in many places
(e.g. cmdline.h)
* I think we could free the buffers before reloading them on redo diff.
* set up rsync to update SF automatically from co version at DIRO:
rsync -Cavz -e ssh . blais@xxdiff.sourceforge.net:/home/users/b/bl/blais/xxdiff/xxdiff-web
(CVS unmerge conflicts)
* It would be nice that if you click on the filename labels it wouldn't add
the "(SOMEFILE)" into the clipboard.
(Printed output)
* There is currently no generator of xxdiff-like output for printing. See if
the guts of xxdiff can be reused to implement one, and if so, add an xxdiff
feature to output to postscript or something.
(Support for Encryption)
* Add possibility to specify a fd for an alternate input for a second
file. This way one can almost write a script that runs diff on two memory
buffers. But how does diff do it then? Maybe that could be supported with
linking with the GNU diff code.
Fix warnings reported from Geoff.Kingsmill at compaq compiling with g++-3.x:
>
> - The following warnings were displayed:-
>
> text.cpp: In method `virtual void XxText::drawContents(QPainter*)':
> text.cpp:263: warning: `int py' might be used uninitialized in this
> function
>
> diffs.cpp: In method `uint XxDiffs::countRemainingUnselected()
> const':
> diffs.cpp:674: warning: `XxHunk curHunk' might be used uninitialized
> in this
> function
> diffs.cpp:675: warning: `XxLine::Type curType' might be used
> uninitialized in
> this function
>
> In file included from resParser.cpp:703:
> resParser.l.c: In function `int XxResParserNS::__yylex(YYSTYPE*)':
> resParser.l.c:931: warning: label `find_rule' defined but not used
>
> getopt.c: In function `_getopt_initialize':
> getopt.c:389: warning: unused parameter `argc'
> getopt.c:390: warning: unused parameter `argv'
* When the selections change the merged view horizontal scrollbars should be
adjusted.
* Resizing line numbers label leaves white border c**d behind, perhaps it
should clear the background before drawing.
* xxdiff still has problems displaying accented chars.
* Bug: not all control paths in the text rendering engine are setting
skip. The merged lines counting routine either.
* Bug in next difference: use "mine older", then n many times.
At some point the n command does not bring you to the beginning of a new region.
* Merged length in lines is incorrectly calculated.