Comments (3)
Our lexer needs to analyze the type of tokens and required to parse both forward and backward, rather than just skipping forward. It also needs to parse various constructs other than types.
Hiding bodies would be useful, but why not just use hs-hide-all
or hs-hide-level
? Those functions can handle other types of blocks and parenthesis. For example, swift-hide-bodies
doesn't hide let
definitions in Parser.swift while hs-hide-level
handles parenthesized expressions well.
Besides, swift-hide-bodies
needs some improvements:
-
swift-skip-type-name
doesn't skip those types:- Types with attribute:
@A B
- Implicitly unwrapped optional types:
Int!
- Protocol composition types:
P & Q
- Opaque types:
some P
- Explicit existential types:
any P
- Async function types:
(Int) async throws -> Int
- Type names in backticks:
`Int`
- Type names with emoji:
😊
- Types with attribute:
-
swift-hide-bodies
mishandles:-
Bare keyword as an identifier:
class Foo { func `deinit`(f: () -> Void) -> Void { f() } } let foo = Foo() // we can use bare keyword as identifier after dot. let x = foo.deinit { print("aaa") }
-
var
incase
patterns:if case var x: Int=1 { print("aaa") }
Note that
swift-skip-type-name
thinksInt=1
is a type name.
-
swift-hide-doc-comment-detail
seems to be nice to incorporate. I'm not sure how to combine codes under Apache License v2.0 and GPLv3, though I know that Apache License v2.0 is compatible with GPLv3.
Other than that, Apple's swift-mode
seems to be less accurate while concise and efficient; it doesn't handle those constructs:
-
Multiline string literals:
let x = """ aaa " aaa """ let y = Foo()
-
Extended string literals:
#"abc"def"#
-
String interpolations:
"aaa \(/* " */ 1) bbb"
-
Regular expressions.
-
Nested multiline comments.
from swift-mode.
from swift-mode.
hs-hide-all hides too much (the methods and properties of every type); I was unable to make hs-hide-level do anything useful in my Swift file.
C-2 M-x hs-hide-level
at the beginning of the Parser.swift
will show you outline of the file.
? let definitions don’t ever have bodies in Swift. A body is a block surrounded by braces at the top level of a declaration.
Parser.swift
has many let bindings with large expression, that is, functionDecl
and followings. To grab the outline of the file, it should be hidden.
from swift-mode.
Related Issues (20)
- I am not able to set the default indent to 2 spaces. HOT 2
- Link sourcekit-lsp in README HOT 1
- Debugging multiple targets is not supported HOT 1
- How do you configure what scheme to build? HOT 1
- Indentation for generic parameter lists HOT 3
- When switch case statements are fully indented, following lines are not at all
- Lisp nesting exceeds ‘max-lisp-eval-depth’ error HOT 3
- Protocol indentation HOT 2
- iMenu doesn't find declarations unless the opening brace of the containing top-level entity is on the same line HOT 4
- Function declarations get tagged with function-call-face HOT 1
- How do I use the swift menu? HOT 1
- Does not work on M1 Macs HOT 5
- Performance incompatible with which-function mode HOT 2
- Support for Emacs 29+ treesitter integration HOT 1
- comint-continue-subjob: Buffer *Swift REPL [xcrun swift]* has no process HOT 2
- Swift 5.8 Deprecated --chdir HOT 1
- How can I turn off the arguments and fields aligning, and use it with an indentation only? HOT 1
- which-function mode missing full extension name HOT 1
- Syntax highlight error in function names that contain keywords HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from swift-mode.