Ticket #2859 (closed defect: fixed)

Opened 4 years ago

Last modified 4 years ago

ctags support is broken (sigsegv)

Reported by: yarda Owned by: angel_il
Priority: major Milestone: 4.8.5
Component: mcedit Version: 4.8.4
Keywords: Cc: jnovy@…
Blocked By: Blocking:
Branch state: merged Votes for changeset: committed-master committed-stable

Description

ctags support is very useful feature, but unfortunately it seems to be broken for some time. For good user experience it should work out of the box and the functionality should be documented in official docs, but at least it shouldn't segfault.

version (mc -V):
GNU Midnight Commander 4.8.4
Built with GLib 2.32.4
Using the S-Lang library with terminfo database
With builtin Editor
With subshell support as default
With support for background operations
With mouse support on xterm and Linux console
With internationalization support
With multiple codepages support
Virtual File Systems: cpiofs, tarfs, sfs, extfs, ftpfs, sftpfs, fish, smbfs
Data types: char: 8; int: 32; long: 64; void *: 64; size_t: 64; off_t: 64;

How to reproduce:

  1. on sources: ctags -R .
  2. with tags in current dir open any file (needn't be C source or headers)
  3. Alt + - (i.e. alt minus or Esc + -)

Current result:
sigsegv

Expected result:
no sigsegv

Also I am unable to get this functionality to work, Alt + = or Alt + Enter or Esc + = do nothing for me.

Change History

comment:1 Changed 4 years ago by yarda

  • Component changed from mc-core to mcedit

comment:2 Changed 4 years ago by yarda

  • Version changed from master to 4.8.4

comment:3 Changed 4 years ago by angel_il

  • Status changed from new to accepted
  • Owner set to angel_il

comment:4 Changed 4 years ago by angel_il

yarda: thank you for your feedback, i try fix it.

comment:5 Changed 4 years ago by angel_il

  • Branch state changed from no branch to on review

comment:6 Changed 4 years ago by andrew_b

  • Keywords stable-candidate added
  • Votes for changeset set to andrew_b

comment:7 Changed 4 years ago by andrew_b

  • Milestone changed from Future Releases to 4.8.5

comment:8 Changed 4 years ago by yarda

Thanks. What about Alt + = or Alt + Enter? Does it work for you out of the box?

comment:9 Changed 4 years ago by angel_il

What do you mean?

comment:10 Changed 4 years ago by yarda

Jump to definition and move forward:
https://www.midnight-commander.org/wiki/doc/editor/codejump

They doesn't work for me out of the box and I cannot found anything specific to ctags navigation in mc docs.

comment:11 Changed 4 years ago by angel_il

ok, step by step

1) create two files (a.h, a.c)
a.c

#include a.h;

int aaa;

void main ()
{
    aaa = 1;
}

a.h

extern int aaa;

2) run:

etags --language-force=c
or
find . -type f -name "*.[ch]" | ctags --c-kinds=+p --fields=+iaS --extra=+q -e -L-

(my version by ctags/etags is Exuberant Ctags 5.9~svn20110310)

3) after that you get the file TAGS

$ ls 
a.c  a.h  TAGS

4) open file a.c in mcedit
5) set cursor after word aaa
aaa<here> = 1;
6) select in the editor menu "Command" - "Find declaration M-Enter"
7) you should see the dialog like follow

╔═══════════ aaa ══════════════╗
║ aaa -> a.c:3                 ║
╚══════════════════════════════╝

8) press enter
9) must open the file a.c on line 3
10) press alt-'-' to jump back
11) press alt-'=' to jump forward

comment:12 follow-up: ↓ 13 Changed 4 years ago by yarda

Thanks, PEBKAC :)

I used ctags:
$ ctags -R

but it requires etags:
$ ctags -R -e

Sorry for noise.

comment:13 in reply to: ↑ 12 Changed 4 years ago by angel_il

Replying to yarda:

Thanks, PEBKAC :)

ok :))

comment:14 Changed 4 years ago by slavazanko

  • Votes for changeset changed from andrew_b to andrew_b slavazanko
  • Branch state changed from on review to approved

comment:15 Changed 4 years ago by angel_il

  • Status changed from accepted to testing
  • Resolution set to fixed
  • Branch state changed from approved to merged

comment:16 Changed 4 years ago by angel_il

  • Status changed from testing to closed

comment:17 Changed 4 years ago by angel_il

  • Votes for changeset andrew_b slavazanko deleted

comment:18 Changed 4 years ago by angel_il

  • Votes for changeset set to committed-master committed-stable

comment:19 Changed 4 years ago by angel_il

  • Keywords stable-candidate removed
Note: See TracTickets for help on using tickets.