From: Peter G. <pe...@ar...> - 2003-10-20 21:01:27
|
Bug 825867: Another C indenting problem the attached C code snippet shows the problem. This is following a #if #endif sequence that defines a macro. The line following the endif gets an additional indent. The code snippet: #if defined(PROM) vm_offset_t pa_csrs; tulip_softc_t *const sc = (tulip_softc_t *) self; struct pci_attach_args *const pa = (struct pci_attach_args *) aux; const int unit = sc->tulip_dev.dv_unit; #define PCI_CONF_WRITE(r, v) pci_conf_write(pa->pa_tag, (r), (v)) #define PCI_CONF_READ(r) pci_conf_read(pa->pa_tag, (r)) #define PCI_GETBUSDEVINFO(sc) do { \ int busno, devno, funcno; \ pci_break_tag(pa->pa_tag, &busno, &devno, 0); \ (sc)->tulip_pci_busno = busno; \ (sc)->tulip_pci_devno = devno; \ } while (0) #endif int retval, idx; u_int32_t revinfo, cfdainfo, id; unsigned csroffset = TULIP_PCI_CSROFFSET; unsigned csrsize = TULIP_PCI_CSRSIZE; And the problem is that "int retval, idx;" is indented a notch too far. This is clearly a bug. I haven't been able to think of a simple fix for it, however, and I'd like to release 0.20.2 sooner rather than later, so unless something occurs to me shortly I'm not going to tackle this one right now. The thing that makes fixing this bug difficult, as things stand, is that the C mode version of getCorrectIndentation() is just a stub that calls the Java mode version of getCorrectIndentation(), and the Java mode version doesn't know anything about preprocessor directives. So, while there is a natural algorithm to handle the case at hand (if you hit a preprocessor line while backing up looking for a model, and if that preprocessor line is an #endif matching a #define, skip back to the line preceding the matching #define and continue looking for a model there), there's really nowhere to implement it, since the C mode function is just a stub and the Java mode function is, well, for Java, not C. In any case the Java mode indentation code is a real pig's breakfast, but I don't plan to rewrite it until it can be done in Lisp. On a brighter note, that day is probably not too far away. Thanks for your support. -Peter |